diff --git a/Train_B_Book/.project b/Train_B_Book/.project
new file mode 100644
index 0000000000000000000000000000000000000000..2be4695b56fbc9dfc17b9e4e39170d46b7e45ca3
--- /dev/null
+++ b/Train_B_Book/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>Train</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.rodinp.core.rodinbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.rodinp.core.rodinnature</nature>
+	</natures>
+</projectDescription>
diff --git a/Train_B_Book/train.json b/Train_B_Book/train.json
new file mode 100644
index 0000000000000000000000000000000000000000..7837fc7dbc5c81f54685fcd373f32fa6c12b5786
--- /dev/null
+++ b/Train_B_Book/train.json
@@ -0,0 +1,128 @@
+{
+    "svg": "train.svg",
+    "items": [
+    {
+        "id": "a",
+        "attr": "stroke",
+        "value": "IF A : OCC THEN \"#FF2222\" ELSE IF A : resbl THEN \"#2222FF\" ELSE \"#000000\" END END"
+    },
+    {
+        "id": "b",
+        "attr": "stroke",
+        "value": "IF B : OCC THEN \"#FF2222\" ELSE IF B : resbl THEN \"#2222FF\" ELSE \"#000000\" END END"
+    },
+    {
+        "id": "c",
+        "attr": "stroke",
+        "value": "IF C : OCC THEN \"#FF2222\" ELSE IF C : resbl THEN \"#2222FF\" ELSE \"#000000\" END END"
+    },
+    {
+        "id": "d",
+        "attr": "stroke",
+        "value": "IF D : OCC THEN \"#FF2222\" ELSE IF D : resbl THEN \"#2222FF\" ELSE \"#000000\" END END"
+    },
+    {
+        "id": "e",
+        "attr": "stroke",
+        "value": "IF E : OCC THEN \"#FF2222\" ELSE IF E : resbl THEN \"#2222FF\" ELSE \"#000000\" END END"
+    },
+    {
+        "id": "f",
+        "attr": "stroke",
+        "value": "IF F : OCC THEN \"#FF2222\" ELSE IF F : resbl THEN \"#2222FF\" ELSE \"#000000\" END END"
+    },
+    {
+        "id": "g",
+        "attr": "stroke",
+        "value": "IF G : OCC THEN \"#FF2222\" ELSE IF G : resbl THEN \"#2222FF\" ELSE \"#000000\" END END"
+    },
+    {
+        "id": "h",
+        "attr": "stroke",
+        "value": "IF H : OCC THEN \"#FF2222\" ELSE IF H : resbl THEN \"#2222FF\" ELSE \"#000000\" END END"
+    },
+    {
+        "id": "i",
+        "attr": "stroke",
+        "value": "IF I : OCC THEN \"#FF2222\" ELSE IF I : resbl THEN \"#2222FF\" ELSE \"#000000\" END END"
+    },
+    {
+        "id": "j",
+        "attr": "stroke",
+        "value": "IF J : OCC THEN \"#FF2222\" ELSE IF J : resbl THEN \"#2222FF\" ELSE \"#000000\" END END"
+    },
+    {
+        "id": "k",
+        "attr": "stroke",
+        "value": "IF K : OCC THEN \"#FF2222\" ELSE IF K : resbl THEN \"#2222FF\" ELSE \"#000000\" END END"
+    },
+    {
+        "id": "l",
+        "attr": "stroke",
+        "value": "IF L : OCC THEN \"#FF2222\" ELSE IF L : resbl THEN \"#2222FF\" ELSE \"#000000\" END END"
+    },
+    {
+        "id": "m",
+        "attr": "stroke",
+        "value": "IF M : OCC THEN \"#FF2222\" ELSE IF M : resbl THEN \"#2222FF\" ELSE \"#000000\" END END"
+    },
+    {
+        "id": "n",
+        "attr": "stroke",
+        "value": "IF N : OCC THEN \"#FF2222\" ELSE IF N : resbl THEN \"#2222FF\" ELSE \"#000000\" END END"
+    },
+    {
+        "id": "s1_green",
+        "attr": "fill",
+        "value": "IF S1 : GRN THEN \"#22FF22\" ELSE \"#F6FFD5\" END"
+    },
+    {
+        "id": "s1_red",
+        "attr": "fill",
+        "value": "IF S1 : GRN THEN \"#FFD5D5\" ELSE \"#FF2222\" END"
+    },
+    {
+        "id": "s2_green",
+        "attr": "fill",
+        "value": "IF S2 : GRN THEN \"#22FF22\" ELSE \"#F6FFD5\" END"
+    },
+    {
+        "id": "s2_red",
+        "attr": "fill",
+        "value": "IF S2 : GRN THEN \"#FFD5D5\" ELSE \"#FF2222\" END"
+    },
+    {
+        "id": "s3_green",
+        "attr": "fill",
+        "value": "IF S3 : GRN THEN \"#22FF22\" ELSE \"#F6FFD5\" END"
+    },
+    {
+        "id": "s3_red",
+        "attr": "fill",
+        "value": "IF S3 : GRN THEN \"#FFD5D5\" ELSE \"#FF2222\" END"
+    },
+    {
+        "id": "s4_green",
+        "attr": "fill",
+        "value": "IF S4 : GRN THEN \"#22FF22\" ELSE \"#F6FFD5\" END"
+    },
+    {
+        "id": "s4_red",
+        "attr": "fill",
+        "value": "IF S4 : GRN THEN \"#FFD5D5\" ELSE \"#FF2222\" END"
+    },
+    {
+        "id": "s5_green",
+        "attr": "fill",
+        "value": "IF S5 : GRN THEN \"#22FF22\" ELSE \"#F6FFD5\" END"
+    },
+    {
+        "id": "s5_red",
+        "attr": "fill",
+        "value": "IF S5 : GRN THEN \"#FFD5D5\" ELSE \"#FF2222\" END"
+    }
+],
+    "events": [
+    
+]
+}
diff --git a/Train_B_Book/train.svg b/Train_B_Book/train.svg
new file mode 100644
index 0000000000000000000000000000000000000000..d8e0427322a23442e4f1ec991f74a3d6017f705e
--- /dev/null
+++ b/Train_B_Book/train.svg
@@ -0,0 +1,657 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="300mm"
+   height="100mm"
+   viewBox="0 0 300 100"
+   version="1.1"
+   id="svg8"
+   sodipodi:docname="train.svg"
+   inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.70710678"
+     inkscape:cx="215.92731"
+     inkscape:cy="73.490594"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     showguides="true"
+     inkscape:lockguides="false"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1051"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     height="135mm"
+     fit-margin-top="50"
+     fit-margin-bottom="25"
+     fit-margin-right="50"
+     fit-margin-left="50" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     style="display:inline"
+     transform="translate(0,-197)">
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.35996214px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 67.749941,256.96386 c 0,2.44991 0,2.44991 0,2.44991"
+       id="path4624"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.37917608px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 92.208102,247.17492 c 0,2.44084 0,2.44084 0,2.44084"
+       id="path4626"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.38355985px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 112.11495,247.17492 c 0,2.44084 0,2.44084 0,2.44084"
+       id="path4630"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.37151447px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 112.11495,256.96386 c 0,2.44991 0,2.44991 0,2.44991"
+       id="path4632"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.36369225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 177.89263,247.17492 c 0,2.4499 0,2.4499 0,2.4499"
+       id="path4634"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.37493947px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 214.66086,247.17492 c 0,2.44084 0,2.44084 0,2.44084"
+       id="path4636"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.37561935px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 239.119,256.96386 c 0,2.44991 0,2.44991 0,2.44991"
+       id="path4638"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.3880991px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 153.43448,254.10066 c 0,2.44088 0,2.44088 0,2.44088"
+       id="path4640"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.39280358px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 153.43448,250.03444 c 0,2.44118 0,2.44118 0,2.44118"
+       id="path4642"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;stroke:#000000;stroke-width:0.37917608px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 67.749941,247.17492 c 0,2.44084 0,2.44084 0,2.44084"
+       id="path4626-3"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;stroke:#000000;stroke-width:0.37917608px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 112.11495,240.38504 c 0,2.44111 0,2.44111 0,2.44111"
+       id="path4626-6"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;stroke:#000000;stroke-width:0.37917608px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 165.68381,256.96386 c 0,2.44084 0,2.44084 0,2.44084"
+       id="path4626-7"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;stroke:#000000;stroke-width:0.37917608px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 214.66086,256.96386 c 0,2.44084 0,2.44084 0,2.44084"
+       id="path4626-5"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;stroke:#000000;stroke-width:0.37917608px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 177.89263,250.03444 c 0,2.44118 0,2.44118 0,2.44118"
+       id="path4626-35"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;stroke:#000000;stroke-width:0.37917608px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 153.43448,247.17492 c 0,2.44084 0,2.44084 0,2.44084"
+       id="path4626-62"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;stroke:#000000;stroke-width:0.37917608px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 43.129804,247.17492 c 0,2.44084 0,2.44084 0,2.44084"
+       id="path4626-9"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;stroke:#000000;stroke-width:0.37917608px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 43.129804,256.96386 c 0,2.44084 0,2.44084 0,2.44084"
+       id="path4626-1"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;stroke:#000000;stroke-width:0.37917608px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 239.119,247.17492 c 0,2.44084 0,2.44084 0,2.44084"
+       id="path4626-70"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;stroke:#000000;stroke-width:0.37917608px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 239.119,237.43599 c 0,2.44118 0,2.44118 0,2.44118"
+       id="path4626-60"
+       inkscape:connector-curvature="0" />
+    <g
+       id="s2"
+       inkscape:label="#g934"
+       transform="matrix(2.4487494,0,0,2.4487643,-54.702815,20.659616)">
+      <rect
+         transform="scale(-1,1)"
+         y="93.820374"
+         x="-39.952084"
+         height="1.9113718"
+         width="0.98883682"
+         id="rect4775-5-56"
+         style="display:inline;fill:#f2f2f2;stroke:#000000;stroke-width:0.0563424;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4781-0-9"
+         d="m 39.95208,95.731754 c 0,1.274247 0,1.270456 0,1.270456"
+         style="display:inline;fill:none;stroke:#000000;stroke-width:0.0563424;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <ellipse
+         transform="scale(-1,1)"
+         ry="0.30034313"
+         rx="0.29004401"
+         cy="94.363823"
+         cx="-39.45472"
+         id="s2_green"
+          fill="#f6ffd5"
+         style="display:inline;stroke:#000000;stroke-width:0.0563424;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <ellipse
+         transform="scale(-1,1)"
+         ry="0.30034313"
+         rx="0.29004401"
+         cy="95.21122"
+         cx="-39.465073"
+         id="s2_red"
+          fill="#ffd5d5"
+         style="display:inline;stroke:#000000;stroke-width:0.0563424;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.64790022"
+       x="77.239792"
+       y="247.14159"
+       id="text5069"
+       transform="scale(0.99999691,1.0000031)"><tspan
+         sodipodi:role="line"
+         id="tspan5067"
+         x="77.239792"
+         y="247.14159"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.64790022">A</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.64790022"
+       x="99.644318"
+       y="244.50078"
+       id="text5073"
+       transform="scale(0.99999691,1.0000031)"><tspan
+         sodipodi:role="line"
+         id="tspan5071"
+         x="99.644318"
+         y="244.50078"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.64790022">B</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.64790022"
+       x="169.783"
+       y="237.34956"
+       id="text5077"
+       transform="scale(0.99999691,1.0000031)"><tspan
+         sodipodi:role="line"
+         id="tspan5075"
+         x="169.783"
+         y="237.34956"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.64790022">C</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.64790022"
+       x="132.51379"
+       y="247.16048"
+       id="text5081"
+       transform="scale(0.99999691,1.0000031)"><tspan
+         sodipodi:role="line"
+         id="tspan5079"
+         x="132.51379"
+         y="247.16048"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.64790022">D</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.64790022"
+       x="162.67882"
+       y="247.15971"
+       id="text5085"
+       transform="scale(0.99999691,1.0000031)"><tspan
+         sodipodi:role="line"
+         id="tspan5083"
+         x="162.67882"
+         y="247.15971"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.64790022">E</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.64790022"
+       x="193.33044"
+       y="247.17906"
+       id="text5089"
+       transform="scale(0.99999691,1.0000031)"><tspan
+         sodipodi:role="line"
+         id="tspan5087"
+         x="193.33044"
+         y="247.17906"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.64790022">F</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.64790022"
+       x="223.33548"
+       y="246.94875"
+       id="text5093"
+       transform="scale(0.99999691,1.0000031)"><tspan
+         sodipodi:role="line"
+         id="tspan5091"
+         x="223.33548"
+         y="246.94875"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.64790022">G</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.64790022"
+       x="86.746086"
+       y="265.52444"
+       id="text5097"
+       transform="scale(0.99999691,1.0000031)"><tspan
+         sodipodi:role="line"
+         id="tspan5095"
+         x="86.746086"
+         y="265.52444"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.64790022">H</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.64790022"
+       x="135.30836"
+       y="265.4671"
+       id="text5101"
+       transform="scale(0.99999691,1.0000031)"><tspan
+         sodipodi:role="line"
+         id="tspan5099"
+         x="135.30836"
+         y="265.4671"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.64790022">I</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.64790022"
+       x="190.30042"
+       y="265.35712"
+       id="text5105"
+       transform="scale(0.99999691,1.0000031)"><tspan
+         sodipodi:role="line"
+         id="tspan5103"
+         x="190.30042"
+         y="265.35712"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.64790022">J</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.91093636px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.64790022"
+       x="184.56989"
+       y="255.47145"
+       id="text5109"
+       transform="scale(0.99999691,1.0000031)"><tspan
+         sodipodi:role="line"
+         id="tspan5107"
+         x="184.56989"
+         y="255.47145"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.91093636px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.64790022">K</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.64790022"
+       x="53.187729"
+       y="247.22798"
+       id="text5113"
+       transform="scale(0.99999691,1.0000031)"><tspan
+         sodipodi:role="line"
+         id="tspan5111"
+         x="53.187729"
+         y="247.22798"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.64790022">L</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.64790022"
+       x="52.27145"
+       y="265.4097"
+       id="text5117"
+       transform="scale(0.99999691,1.0000031)"><tspan
+         sodipodi:role="line"
+         id="tspan5115"
+         x="52.27145"
+         y="265.4097"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.64790022">M</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.64790022"
+       x="223.84294"
+       y="265.52444"
+       id="text5121"
+       transform="scale(0.99999691,1.0000031)"><tspan
+         sodipodi:role="line"
+         id="tspan5119"
+         x="223.84294"
+         y="265.52444"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.63867092px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.64790022">N</tspan></text>
+    <path
+       style="fill:none;stroke-width:0.64789993px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+        stroke="#000000"
+       d="M 43.1298,258.19501 H 67.749941"
+       id="m"
+       inkscape:connector-curvature="0"
+       inkscape:label="#path5152" />
+    <path
+       style="fill:none;stroke-width:0.64789993px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+        stroke="#000000"
+       d="M 43.129804,248.39985 H 67.749945"
+       id="l"
+       inkscape:connector-curvature="0"
+       inkscape:label="#path5154" />
+    <path
+       style="fill:none;stroke-width:0.64789993px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+        stroke="#000000"
+       d="M 67.749941,248.40982 H 92.208102"
+       id="a"
+       inkscape:connector-curvature="0"
+       inkscape:label="#path5158" />
+    <path
+       style="fill:none;stroke-width:0.61711693px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 67.749941,258.19501 c 44.353769,0 44.353769,0 44.353769,0"
+        stroke="#000000"
+       id="h"
+       inkscape:connector-curvature="0"
+       inkscape:label="#path5164" />
+    <g
+       id="b"
+       inkscape:label="#g5440"
+        stroke="#000000"
+       transform="matrix(2.4487494,0,0,2.4487643,-54.702815,20.659616)">
+      <path
+         inkscape:connector-curvature="0"
+         id="b1"
+         d="m 59.99427,93.00625 h 8.124807"
+         style="fill:none;stroke-width:0.2387654px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5180"
+         d="m 64.031095,93.00625 c 4.092567,-2.786001 4.092567,-2.786001 4.092567,-2.786001"
+         style="fill:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <path
+       style="fill:none;stroke-width:0.64789993px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+        stroke="#000000"
+       d="m 153.43447,248.40982 h 24.45816"
+       id="e"
+       inkscape:connector-curvature="0"
+       inkscape:label="#path5192" />
+    <path
+       style="fill:none;stroke-width:0.64789993px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+        stroke="#000000"
+       d="M 214.66086,248.40982 H 239.119"
+       id="g"
+       inkscape:connector-curvature="0"
+       inkscape:label="#path5204" />
+    <path
+       style="fill:none;stroke-width:0.64789993px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+        stroke="#000000"
+       d="M 214.66086,258.19501 H 239.119"
+       id="n"
+       inkscape:connector-curvature="0"
+       inkscape:label="#path5206" />
+    <path
+       style="fill:none;stroke-width:0.64789993px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+        stroke="#000000"
+       d="m 112.11495,241.58771 4.52405,-3.09249 h 122.48"
+       id="c"
+       inkscape:connector-curvature="0"
+       inkscape:label="#path5208" />
+    <g
+       id="d"
+        stroke="#000000"
+       inkscape:label="#g906"
+       transform="matrix(2.4487494,0,0,2.4487643,-54.702815,20.659616)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path5190"
+         d="M 68.135615,93.006251 H 84.997394"
+         style="fill:none;stroke-width:0.28027806px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5228"
+         d="m 78.019009,93.00625 7.032131,1.16272"
+         style="fill:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       id="i"
+       inkscape:label="#g922"
+        stroke="#000000"
+       transform="matrix(2.4487494,0,0,2.4487643,-54.702815,20.659616)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path5194"
+         d="M 68.119077,97.00221 H 89.95833"
+         style="fill:none;stroke-width:0.27657041px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5230"
+         d="m 78.019011,97.002211 6.978383,-1.16409"
+         style="fill:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       id="j"
+        stroke="#000000"
+       inkscape:label="#g914"
+       transform="matrix(2.4487494,0,0,2.4487643,-54.702815,20.659616)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path5198"
+         d="m 89.95833,97.00221 h 20.04219"
+         style="fill:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5232"
+         d="m 101.99687,97.002211 -7.067263,-1.16409"
+         style="fill:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       id="f"
+        stroke="#000000"
+       inkscape:label="#g910"
+       transform="matrix(2.4487494,0,0,2.4487643,-54.702815,20.659616)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path5200"
+         d="M 94.985415,93.006251 H 110.00052"
+         style="fill:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5234"
+         d="m 94.985413,94.16897 7.011457,-1.16272"
+         style="fill:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       id="k"
+        stroke="#000000"
+       inkscape:label="#g918"
+       transform="matrix(2.4487494,0,0,2.4487643,-54.839475,20.659616)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path5236"
+         d="m 84.997394,94.168971 9.988021,1.66915"
+         style="fill:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5238"
+         d="m 84.997392,95.83812 9.988021,-1.66915"
+         style="fill:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <path
+       style="display:inline;fill:none;stroke:#000000;stroke-width:0.37917608px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 177.89263,254.10066 c 0,2.44084 0,2.44084 0,2.44084"
+       id="path4626-7-4"
+       inkscape:connector-curvature="0" />
+    <g
+       id="s1"
+       inkscape:label="#g928"
+       transform="matrix(2.4487494,0,0,2.4487643,-54.702815,20.659616)">
+      <rect
+         transform="scale(-1,1)"
+         y="89.820274"
+         x="-39.952087"
+         height="1.9113718"
+         width="0.98883688"
+         id="rect4775-5-56-7"
+         style="display:inline;fill:#f2f2f2;stroke:#000000;stroke-width:0.0563424;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4781-0-9-8"
+         d="m 39.952082,91.731655 c 0,1.274247 0,1.270456 0,1.270456"
+         style="display:inline;fill:none;stroke:#000000;stroke-width:0.0563424;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <ellipse
+         transform="scale(-1,1)"
+         ry="0.30034313"
+         rx="0.29004401"
+         cy="90.363724"
+         cx="-39.454723"
+         id="s1_green"
+         fill="#f6ffd5"
+         style="display:inline;stroke:#000000;stroke-width:0.0563424;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <ellipse
+         transform="scale(-1,1)"
+         ry="0.30034313"
+         rx="0.29004401"
+         cy="91.211121"
+         cx="-39.465076"
+         id="s1_red"
+         fill="#ffd5d5"
+         style="display:inline;stroke:#000000;stroke-width:0.0563424;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       id="s4"
+       transform="matrix(2.4487494,0,0,2.4487643,-54.702815,20.659616)">
+      <rect
+         y="85.775551"
+         x="119.98853"
+         height="1.9113718"
+         width="0.98883688"
+         id="rect4775-5-56-0"
+         style="display:inline;fill:#f2f2f2;stroke:#000000;stroke-width:0.0563424;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4781-0-9-4"
+         d="m 119.98854,87.686934 c 0,1.274247 0,1.270456 0,1.270456"
+         style="display:inline;fill:none;stroke:#000000;stroke-width:0.0563424;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <ellipse
+         ry="0.30034313"
+         rx="0.29004401"
+         cy="86.319"
+         cx="120.4859"
+         id="s4_green"
+          fill="#f6ffd5"
+         style="display:inline;stroke:#000000;stroke-width:0.0563424;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <ellipse
+         ry="0.30034313"
+         rx="0.29004401"
+         cy="87.166397"
+         cx="120.47554"
+         id="s4_red"
+          fill="#ffd5d5"
+         style="display:inline;stroke:#000000;stroke-width:0.0563424;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       id="s5"
+       transform="matrix(2.4487494,0,0,2.4487643,-54.702815,20.659616)">
+      <rect
+         y="89.824417"
+         x="119.98853"
+         height="1.9113718"
+         width="0.98883694"
+         id="rect4775-5-56-0-6"
+         style="display:inline;fill:#f2f2f2;stroke:#000000;stroke-width:0.0563424;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4781-0-9-4-0"
+         d="m 119.98854,91.735794 c 0,1.274247 0,1.270456 0,1.270456"
+         style="display:inline;fill:none;stroke:#000000;stroke-width:0.0563424;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <ellipse
+         ry="0.30034313"
+         rx="0.29004401"
+         cy="90.367867"
+         cx="120.4859"
+         id="s5_green"
+          fill="#f6ffd5"
+         style="display:inline;stroke:#000000;stroke-width:0.0563424;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <ellipse
+         ry="0.30034313"
+         rx="0.29004401"
+         cy="91.215263"
+         cx="120.47554"
+         id="s5_red"
+          fill="#ffd5d5"
+         style="display:inline;stroke:#000000;stroke-width:0.0563424;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       id="s3"
+       inkscape:label="#g952"
+       transform="matrix(2.4487494,0,0,2.4487643,-54.702815,20.659616)">
+      <rect
+         y="93.820366"
+         x="119.98853"
+         height="1.9113718"
+         width="0.98883694"
+         id="rect4775-5-56-0-5"
+         style="display:inline;fill:#f2f2f2;stroke:#000000;stroke-width:0.0563424;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4781-0-9-4-9"
+         d="m 119.98854,95.731754 c 0,1.274247 0,1.270456 0,1.270456"
+         style="display:inline;fill:none;stroke:#000000;stroke-width:0.0563424;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <ellipse
+         ry="0.30034313"
+         rx="0.29004401"
+         cy="94.363815"
+         cx="120.4859"
+         id="s3_green"
+          fill="#f6ffd5"
+         style="display:inline;stroke:#000000;stroke-width:0.0563424;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <ellipse
+         ry="0.30034313"
+         rx="0.29004401"
+         cy="95.211212"
+         cx="120.47554"
+         id="s3_red"
+          fill="#ffd5d5"
+         style="display:inline;stroke:#000000;stroke-width:0.0563424;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/Train_B_Book/train_0.bcm b/Train_B_Book/train_0.bcm
new file mode 100644
index 0000000000000000000000000000000000000000..ddecded91cc6cc53503416958a9371b08d9cc4aa
--- /dev/null
+++ b/Train_B_Book/train_0.bcm
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scMachineFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter">
+    <org.eventb.core.scSeesContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.seesContext#internal_sees1"/>
+    <org.eventb.core.scInternalContext name="train_ctx0">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInvariant name="train_ctx1" org.eventb.core.label="inv1" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx2" org.eventb.core.label="inv2" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx3" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx4" org.eventb.core.label="inv5" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx5" org.eventb.core.label="inv4" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx6" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx7" org.eventb.core.label="inv7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx8" org.eventb.core.label="inv8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scVariable name="resrt" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.variable#internal_var1" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="OCC" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.variable#internal_var4" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="resbl" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.variable#internal_var2" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="rsrtbl" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.variable#internal_var3" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+    <org.eventb.core.scEvent name="train_ctx9" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="INITIALISATION" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1">
+        <org.eventb.core.scAction name="'" org.eventb.core.assignment="resrt ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act1"/>
+        <org.eventb.core.scAction name="(" org.eventb.core.assignment="resbl ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act2"/>
+        <org.eventb.core.scAction name=")" org.eventb.core.assignment="rsrtbl ≔ ∅ ⦂ ℙ(BLOCKS×ROUTES)" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act3"/>
+        <org.eventb.core.scAction name="*" org.eventb.core.assignment="OCC ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act4"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx:" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="route_reservation" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1">
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="rsrtbl ≔ rsrtbl∪(rtbl ▷ {r})" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="u" org.eventb.core.assignment="resbl ≔ resbl∪rtbl∼[{r}]" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element3"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx;" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="route_freeing" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2">
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt ∖ {r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element1"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx=" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="FRONT_MOVE_1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3">
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="fst(r)∈resbl ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3" org.eventb.core.predicate="rsrtbl(fst(r))=r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="OCC ≔ OCC∪{fst(r)}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element1"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx&gt;" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="FRONT_MOVE_2" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4">
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="c∉OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3" org.eventb.core.predicate="b ↦ c∈nxt(rsrtbl(b))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scParameter name="c" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.parameter#internal_element2" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="OCC ≔ OCC∪{c}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.action#internal_element1"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx?" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="BACK_MOVE" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5">
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="n=nxt(rsrtbl(b))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3" org.eventb.core.predicate="b∈dom(n)⇒n(b)∈OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd4" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒rsrtbl(n∼(b))≠rsrtbl(b)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element4" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scParameter name="n" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.parameter#internal_element2" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.scAction name="o" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="p" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="q" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element3"/>
+    </org.eventb.core.scEvent>
+</org.eventb.core.scMachineFile>
diff --git a/Train_B_Book/train_0.bpo b/Train_B_Book/train_0.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..47b4acef6e61173db25fcaacd2b4c76be18479a8
--- /dev/null
+++ b/Train_B_Book/train_0.bpo
@@ -0,0 +1,374 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTET" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEU" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEV" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEW" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEX" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEY" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEZ" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="ROUTE[" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+        <org.eventb.core.poPredicate name="ROUTE\" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poPredicate name="ROUTE]" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poPredicate name="ROUTE^" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poPredicate name="ROUTE_" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poPredicate name="ROUTE`" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="inv6/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Invariant" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx5"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx5"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="inv7/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Invariant" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx6"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx6"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="inv8/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Invariant" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx7"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx7"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="INITIALISATION/inv3/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx9"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="(∅ ⦂ ℙ(BLOCKS×ROUTES))∈(∅ ⦂ ℙ(BLOCKS)) → (∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#INITIALISATION\/inv3\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx5|org.eventb.core.poPredicate#PRD2"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="INITIALISATION/inv5/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx9"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="(∅ ⦂ ℙ(BLOCKS×ROUTES))⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#INITIALISATION\/inv5\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx5|org.eventb.core.poPredicate#PRD3"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="INITIALISATION/inv4/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx9"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="(∅ ⦂ ℙ(BLOCKS))⊆(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#INITIALISATION\/inv4\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx5|org.eventb.core.poPredicate#PRD4"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="INITIALISATION/inv6/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx9"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ (∅ ⦂ ℙ(BLOCKS×ROUTES))∼[{r}]]∩((∅ ⦂ ℙ(BLOCKS×ROUTES))∼[{r}] ∖ (∅ ⦂ ℙ(BLOCKS)))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#INITIALISATION\/inv6\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx6|org.eventb.core.poPredicate#PRD5"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="INITIALISATION/inv7/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx9"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[(∅ ⦂ ℙ(BLOCKS×ROUTES))∼[{r}]]⊆(∅ ⦂ ℙ(BLOCKS×ROUTES))∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#INITIALISATION\/inv7\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx7|org.eventb.core.poPredicate#PRD6"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="INITIALISATION/inv8/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx9"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[(∅ ⦂ ℙ(BLOCKS×ROUTES))∼[{r}] ∖ (∅ ⦂ ℙ(BLOCKS))]⊆(∅ ⦂ ℙ(BLOCKS×ROUTES))∼[{r}] ∖ (∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#INITIALISATION\/inv8\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD7"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx9" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx9" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx9" org.eventb.core.poStamp="0"/>
+    <org.eventb.core.poSequent name="route_reservation/inv3/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx:"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="rsrtbl∪(rtbl ▷ {r})∈resbl∪rtbl∼[{r}] → resrt∪{r}" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#route_reservation\/inv3\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx5|org.eventb.core.poPredicate#PRD2"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="route_reservation/inv5/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx:"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="rsrtbl∪(rtbl ▷ {r})⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#route_reservation\/inv5\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx5|org.eventb.core.poPredicate#PRD3"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="route_reservation/inv4/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx:"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="OCC⊆resbl∪rtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#route_reservation\/inv4\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx5|org.eventb.core.poPredicate#PRD4"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="route_reservation/inv6/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx:"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈ROUTES⇒(nxt(r0))[rtbl∼[{r0}] ∖ (rsrtbl∪(rtbl ▷ {r}))∼[{r0}]]∩((rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#route_reservation\/inv6\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx6|org.eventb.core.poPredicate#PRD5"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="route_reservation/inv7/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx:"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈ROUTES⇒(nxt(r0))[(rsrtbl∪(rtbl ▷ {r}))∼[{r0}]]⊆(rsrtbl∪(rtbl ▷ {r}))∼[{r0}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#route_reservation\/inv7\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx7|org.eventb.core.poPredicate#PRD6"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="route_reservation/inv8/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx:"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈ROUTES⇒(nxt(r0))[(rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ∖ OCC]⊆(rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#route_reservation\/inv8\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD7"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx:" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx:" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx:" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="route_freeing/inv3/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx;"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="rsrtbl∈resbl → resrt ∖ {r}" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#route_freeing\/inv3\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx5|org.eventb.core.poPredicate#PRD2"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx;" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx;" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx;" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/grd2/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Guard" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTHYPtrain_ctx='"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTHYPtrain_ctx='"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/grd3/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Guard" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTHYPtrain_ctx=("/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧fst(r)∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTHYPtrain_ctx=("/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/inv4/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx="/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="OCC∪{fst(r)}⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#FRONT_MOVE_1\/inv4\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx5|org.eventb.core.poPredicate#PRD4"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/inv6/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx="/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈ROUTES⇒(nxt(r0))[rtbl∼[{r0}] ∖ rsrtbl∼[{r0}]]∩(rsrtbl∼[{r0}] ∖ (OCC∪{fst(r)}))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#FRONT_MOVE_1\/inv6\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx6|org.eventb.core.poPredicate#PRD5"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/inv8/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx="/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈ROUTES⇒(nxt(r0))[rsrtbl∼[{r0}] ∖ (OCC∪{fst(r)})]⊆rsrtbl∼[{r0}] ∖ (OCC∪{fst(r)})" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#FRONT_MOVE_1\/inv8\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD7"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/act1/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of action" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx="/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx="/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx=" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTHYPtrain_ctx='" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx=" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTHYPtrain_ctx=(" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTHYPtrain_ctx='" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="fst(r)∈resbl ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx=" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTHYPtrain_ctx=(" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="rsrtbl(fst(r))=r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="FRONT_MOVE_2/grd3/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Guard" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTHYPtrain_ctx&gt;("/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="b∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES∧rsrtbl(b)∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTHYPtrain_ctx&gt;("/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_2/inv4/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx&gt;"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="OCC∪{c}⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#FRONT_MOVE_2\/inv4\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx5|org.eventb.core.poPredicate#PRD4"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_2/inv6/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx&gt;"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ (OCC∪{c}))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#FRONT_MOVE_2\/inv6\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx6|org.eventb.core.poPredicate#PRD5"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_2/inv8/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx&gt;"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ (OCC∪{c})]⊆rsrtbl∼[{r}] ∖ (OCC∪{c})" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#FRONT_MOVE_2\/inv8\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD7"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx&gt;" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="c" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTHYPtrain_ctx&gt;(" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx&gt;" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="c∉OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx&gt;" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTHYPtrain_ctx&gt;(" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="b ↦ c∈nxt(rsrtbl(b))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="BACK_MOVE/grd2/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Guard" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTHYPtrain_ctx?'"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="b∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES∧rsrtbl(b)∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTHYPtrain_ctx?'"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE/grd3/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Guard" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTHYPtrain_ctx?("/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="b∈dom(n)⇒n∈BLOCKS ⇸ BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTHYPtrain_ctx?("/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE/grd4/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Guard" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTHYPtrain_ctx?)"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="(b∈ran(n)⇒b∈dom(n∼)∧n∼∈BLOCKS ⇸ BLOCKS)∧(b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒rsrtbl∈BLOCKS ⇸ ROUTES∧b∈dom(rsrtbl))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element4"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element4"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTHYPtrain_ctx?)"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE/inv3/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx?"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="{b} ⩤ rsrtbl∈resbl ∖ {b} → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#BACK_MOVE\/inv3\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx5|org.eventb.core.poPredicate#PRD2"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE/inv5/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx?"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="{b} ⩤ rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#BACK_MOVE\/inv5\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx5|org.eventb.core.poPredicate#PRD3"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE/inv4/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx?"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="OCC ∖ {b}⊆resbl ∖ {b}" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#BACK_MOVE\/inv4\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx5|org.eventb.core.poPredicate#PRD4"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE/inv6/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx?"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ ({b} ⩤ rsrtbl)∼[{r}]]∩(({b} ⩤ rsrtbl)∼[{r}] ∖ (OCC ∖ {b}))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#BACK_MOVE\/inv6\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx6|org.eventb.core.poPredicate#PRD5"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE/inv7/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx?"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[({b} ⩤ rsrtbl)∼[{r}]]⊆({b} ⩤ rsrtbl)∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#BACK_MOVE\/inv7\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx7|org.eventb.core.poPredicate#PRD6"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE/inv8/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx?"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[({b} ⩤ rsrtbl)∼[{r}] ∖ (OCC ∖ {b})]⊆({b} ⩤ rsrtbl)∼[{r}] ∖ (OCC ∖ {b})" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poSequent#BACK_MOVE\/inv8\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD7"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx?" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="n" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTHYPtrain_ctx?'" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx?" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTHYPtrain_ctx?(" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTHYPtrain_ctx?'" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="n=nxt(rsrtbl(b))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTHYPtrain_ctx?)" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTHYPtrain_ctx?(" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="b∈dom(n)⇒n(b)∈OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx?" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#EVTHYPtrain_ctx?)" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒rsrtbl(n∼(b))≠rsrtbl(b)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element4"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="HYPtrain_ctx5" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I"/>
+        <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I"/>
+        <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="HYPtrain_ctx6" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx5" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD5" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="HYPtrain_ctx7" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx6" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_0.bpo|org.eventb.core.poFile#train_0|org.eventb.core.poPredicateSet#HYPtrain_ctx7" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+    </org.eventb.core.poPredicateSet>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_0.bpr b/Train_B_Book/train_0.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..41cc65f2f2253624a52a32e338d05ecccbfd7b62
--- /dev/null
+++ b/Train_B_Book/train_0.bpr
@@ -0,0 +1,8946 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.prFile version="1">
+    <org.eventb.core.prProof name="inv6/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p70"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p72"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p74"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p77"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p76"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p88">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p71"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p73"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p75"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p88" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p89"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p80"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p82"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p85"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p86"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p87"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p95">
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p95" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p96">
+                                                                <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p96" org.eventb.core.prHyps="p1">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p97">
+                                                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p97" org.eventb.core.prHyps="">
+                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p98">
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p98" org.eventb.core.prHyps=""/>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                    <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p99">
+                                                        <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p99" org.eventb.core.prHyps="p1"/>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·r∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="r∈ROUTES">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="(∀r⦂ROUTES·r∈dom(nxt))∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="r∈dom(nxt)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="inv7/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p70"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p72"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p74"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p77"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p76"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p90">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p71"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p88"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p73"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p89"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p75"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p90" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p97">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p80"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p82"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p86"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p87"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p88"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p89"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p97" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p98">
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p99">
+                                                                <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p99" org.eventb.core.prHyps="p1">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p100">
+                                                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p100" org.eventb.core.prHyps="">
+                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p101">
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p101" org.eventb.core.prHyps=""/>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                    <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p102">
+                                                        <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p102" org.eventb.core.prHyps="p1"/>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES·r∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="r∈ROUTES">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="(∀r⦂ROUTES·r∈dom(nxt))∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="r∈dom(nxt)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="inv8/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p70"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p72"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p74"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p77"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p76"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p92">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p88"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p89"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p71"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p90"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p73"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p91"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p75"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p100">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p80"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p82"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p86"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p88"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p97"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p89"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p98"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p99"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p91"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p100" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p101">
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p101" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p102">
+                                                                <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p102" org.eventb.core.prHyps="p1">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p103">
+                                                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p103" org.eventb.core.prHyps="">
+                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p104">
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p104" org.eventb.core.prHyps=""/>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                    <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p105">
+                                                        <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p105" org.eventb.core.prHyps="p1"/>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES·r∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="r∈ROUTES">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="(∀r⦂ROUTES·r∈dom(nxt))∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="r∈dom(nxt)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(BLOCKS×ROUTES))∈(∅ ⦂ ℙ(BLOCKS)) → (∅ ⦂ ℙ(ROUTES))"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(BLOCKS×ROUTES))⊆rtbl"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(BLOCKS))⊆(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ (∅ ⦂ ℙ(BLOCKS×ROUTES))∼[{r}]]∩((∅ ⦂ ℙ(BLOCKS×ROUTES))∼[{r}] ∖ (∅ ⦂ ℙ(BLOCKS)))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[(∅ ⦂ ℙ(BLOCKS×ROUTES))∼[{r}]]⊆(∅ ⦂ ℙ(BLOCKS×ROUTES))∼[{r}]"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv8/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[(∅ ⦂ ℙ(BLOCKS×ROUTES))∼[{r}] ∖ (∅ ⦂ ℙ(BLOCKS))]⊆(∅ ⦂ ℙ(BLOCKS×ROUTES))∼[{r}] ∖ (∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_reservation/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p18"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p21"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p23"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p25"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p26"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p27"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p28"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p15"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p29"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p30"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p21"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p31"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p23"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p25"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p26"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p3,p10">
+                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="r∉resrt"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="rsrtbl∪(rtbl ▷ {r})∈resbl∪rtbl∼[{r}] → resrt∪{r}"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬r∈resrt"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_reservation/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p21"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p22"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p23"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p24"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p10">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26">
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p28"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p29"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p30"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p15"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p31"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p32"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p33"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p18"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p34"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p20"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p35"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p4"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p36"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p21"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p37"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p22"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p38"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p23"/>
+                                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p39"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p29"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p40"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p30"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p41"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p33"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p42"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p34"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p43"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p35"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p44"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p36"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p45"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p37"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p46"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p38"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p5,p13,p17,p19,p9,p14,p6,p8,p10,p16,p11,p24,p39,p40,p41,p42,p43,p44,p45,p46">
+                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="rsrtbl⊆rtbl∧rtbl ▷ {r}⊆rtbl"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="r∉resrt"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬r∈resrt"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="⊤∧rtbl ▷ {r}⊆rtbl"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="rsrtbl∪(rtbl ▷ {r})⊆rtbl"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="rtbl ▷ {r}⊆rtbl"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_reservation/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p21"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p22"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p23"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p24"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p25"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p26"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p27"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p28"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p29"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p30"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p18"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p31"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p32"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p4"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p33"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p34"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p35"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p23"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p36"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p37"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p38"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p30"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p39"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p31"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p40"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p32"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p41"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p33"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p42"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p34"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p43"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p35"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p5,p13,p17,p19,p9,p14,p6,p8,p10,p16,p11,p24,p36,p37,p38,p39,p40,p41,p42,p43">
+                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="r∉resrt"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬r∈resrt"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="OCC⊆resbl∪rtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_reservation/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p2"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p23"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p25"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p27"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p28"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p15"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p29"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p18"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p30"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p20"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p31"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p23"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p25"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r0)" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36">
+                                        <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p3,p10,p29">
+                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="r∉resrt"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬r∈resrt"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r0⦂ROUTES·(nxt(r0))[rtbl∼[{r0}] ∖ (rsrtbl∪(rtbl ▷ {r}))∼[{r0}]]∩((rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="(nxt(r0))[rtbl∼[{r0}] ∖ (rsrtbl∪(rtbl ▷ {r}))∼[{r0}]]∩((rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈ROUTES⇒(nxt(r0))[rtbl∼[{r0}] ∖ (rsrtbl∪(rtbl ▷ {r}))∼[{r0}]]∩((rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r0⦂ROUTES·⊤⇒(nxt(r0))[rtbl∼[{r0}] ∖ (rsrtbl∪(rtbl ▷ {r}))∼[{r0}]]∩((rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_reservation/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17" org.eventb.core.prSets="BLOCKS,ROUTES" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p20"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p21"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p22"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p23"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p6"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p25"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p26"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p27"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p28"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p29"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p30"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p31"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p32"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p33"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p35"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p36"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p25"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p37"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p28"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p38"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p29"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p39"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p30"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p40"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p31"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p41"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p32"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p42"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p33"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r0)" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44">
+                                        <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p4,p11,p15,p12,p5,p7,p8,p14,p35,p36,p37,p39,p41,p42"/>
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p9,p22,p38,p4,p11,p15,p12,p5,p7,p8,p14,p35,p36,p37,p39,p41,p42">
+                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="r∉resrt"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r0⦂ROUTES·⊤⇒(nxt(r0))[(rsrtbl∪(rtbl ▷ {r}))∼[{r0}]]⊆(rsrtbl∪(rtbl ▷ {r}))∼[{r0}]"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬r∈resrt"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r0⦂ROUTES·(nxt(r0))[(rsrtbl∪(rtbl ▷ {r}))∼[{r0}]]⊆(rsrtbl∪(rtbl ▷ {r}))∼[{r0}]"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="(nxt(r0))[(rsrtbl∪(rtbl ▷ {r}))∼[{r0}]]⊆(rsrtbl∪(rtbl ▷ {r}))∼[{r0}]">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈ROUTES⇒(nxt(r0))[(rsrtbl∪(rtbl ▷ {r}))∼[{r0}]]⊆(rsrtbl∪(rtbl ▷ {r}))∼[{r0}]"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_reservation/inv8/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17" org.eventb.core.prSets="BLOCKS,ROUTES" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p20"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p21"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p22"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p23"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p6"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p25"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p26"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p27"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p28"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p29"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p30"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p31"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p32"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p33"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p35"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p36"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p25"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p37"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p28"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p38"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p29"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p39"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p30"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p40"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p31"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p41"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p32"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p42"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p33"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r0)" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44">
+                                        <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p4,p11,p15,p12,p5,p7,p8,p14,p35,p36,p37,p38,p41,p42"/>
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p9,p22,p39,p4,p11,p15,p12,p5,p7,p8,p14,p35,p36,p37,p38,p41,p42">
+                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="r∉resrt"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r0⦂ROUTES·⊤⇒(nxt(r0))[(rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ∖ OCC]⊆(rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬r∈resrt"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈ROUTES⇒(nxt(r0))[(rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ∖ OCC]⊆(rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="(nxt(r0))[(rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ∖ OCC]⊆(rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ∖ OCC">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r0⦂ROUTES·(nxt(r0))[(rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ∖ OCC]⊆(rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_freeing/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p20"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p21"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p22"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p23"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p6"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p25"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p26"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p27"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p28"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p29"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p30"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p31"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p32"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p33"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p35"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p25"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p36"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p28"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p37"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p29"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p38"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p30"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p39"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p31"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p40"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p32"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p41"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p33"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p12,p16,p18,p9,p13,p5,p8,p10,p15,p7,p34,p35,p36,p37,p38,p39,p40,p41">
+                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="rsrtbl∈resbl → resrt ∖ {r}"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/grd2/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p70"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p72"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p74"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p77"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p76"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p88"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p90"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p89"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p91"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p71"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p92"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p73"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p93"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p75"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p80"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p82"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p86"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p97"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p88"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p98"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p99"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p100"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p101"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p93"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p102">
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p102" org.eventb.core.prHyps="p1">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p103">
+                                                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p103" org.eventb.core.prHyps="">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p104">
+                                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p104" org.eventb.core.prHyps=""/>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                            <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p105">
+                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p105" org.eventb.core.prHyps="p1"/>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="r∈ROUTES"/>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="r∈dom(fst)"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/grd3/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p18,p10">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p25"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p2"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p26"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p28"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p29"/>
+                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p30"/>
+                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p16"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p31"/>
+                                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p32"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p20"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p35"/>
+                                <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p5"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p36"/>
+                                <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p37"/>
+                                <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p25"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p38"/>
+                                <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p26"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p39"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p29"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p40"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p30"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p41"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p33"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p42"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p34"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p43"/>
+                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p35"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p44"/>
+                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p36"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p45"/>
+                                        <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p37"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p46"/>
+                                        <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p38"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47">
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p6,p14,p19,p21,p12,p15,p7,p9,p11,p17,p4,p3,p18,p10,p39,p40,p41,p42,p43,p44,p45,p46">
+                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                            <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p48">
+                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="p9"/>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="r∈resrt"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="⊤∧⊤∧fst(r)∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="fst(r)∈resbl ∖ OCC"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="fst(r)∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="r∈dom(fst)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="fst(r)∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧fst(r)∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p26"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p27"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p28"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p13">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30">
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31">
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p33"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p4"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p34"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p37"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p38"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p25"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p39"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p21"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p40"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p26"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p41"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p27"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p42"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p28"/>
+                                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p43"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p44"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p34"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p45"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p46"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p38"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p47"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p39"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p48"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p40"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p49"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p41"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p50"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p42"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p2,p10,p15,p17,p6,p11,p3,p5,p23,p13,p1,p20,p14,p22,p8,p24,p7,p43,p44,p45,p46,p47,p48,p49,p50">
+                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="r∈resrt"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="fst(r)∈resbl"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl(fst(r))=r"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="OCC⊆resbl∧fst(r)∈resbl"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="fst(r)∈resbl ∖ OCC"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="fst(r)∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="OCC∪{fst(r)}⊆resbl"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="r∈dom(fst)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="⊤∧fst(r)∈resbl"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p26"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p27"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p28"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p29"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p30"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p4"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p31"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p32"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p33"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p34"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p35"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p25"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p36"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p37"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p26"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p38"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p27"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p39"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p28"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p41"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p42"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p31"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p43"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p34"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p44"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p35"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p45"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p36"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p46"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p37"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p47"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p38"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p48"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p39"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r0)" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50">
+                                        <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p2,p10,p15,p17,p6,p11,p3,p5,p23,p13,p1,p20,p14,p22,p8,p24,p7,p41,p42,p43,p44,p45,p46,p47,p48">
+                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="r∈resrt"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r0⦂ROUTES·⊤⇒(nxt(r0))[rtbl∼[{r0}] ∖ rsrtbl∼[{r0}]]∩(rsrtbl∼[{r0}] ∖ (OCC∪{fst(r)}))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl(fst(r))=r"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="(nxt(r0))[rtbl∼[{r0}] ∖ rsrtbl∼[{r0}]]∩(rsrtbl∼[{r0}] ∖ (OCC∪{fst(r)}))=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="fst(r)∈resbl ∖ OCC"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈ROUTES⇒(nxt(r0))[rtbl∼[{r0}] ∖ rsrtbl∼[{r0}]]∩(rsrtbl∼[{r0}] ∖ (OCC∪{fst(r)}))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="fst(r)∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r0⦂ROUTES·(nxt(r0))[rtbl∼[{r0}] ∖ rsrtbl∼[{r0}]]∩(rsrtbl∼[{r0}] ∖ (OCC∪{fst(r)}))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="r∈dom(fst)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/inv8/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="r0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ROUTES" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p5"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p10"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p18"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p20"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p2"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p21"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p4"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p22"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p6"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p24"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p25"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p11"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p26"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p15"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p27"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p17"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p28"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p19"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p29"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p20"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p30"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p21"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p31"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r0)" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33">
+                                        <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r0⦂ROUTES·(nxt(r0))[rsrtbl∼[{r0}] ∖ (OCC∪{fst(r)})]⊆rsrtbl∼[{r0}] ∖ (OCC∪{fst(r)})"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈ROUTES⇒(nxt(r0))[rsrtbl∼[{r0}] ∖ (OCC∪{fst(r)})]⊆rsrtbl∼[{r0}] ∖ (OCC∪{fst(r)})"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="(nxt(r0))[rsrtbl∼[{r0}] ∖ (OCC∪{fst(r)})]⊆rsrtbl∼[{r0}] ∖ (OCC∪{fst(r)})">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r0⦂ROUTES·⊤⇒(nxt(r0))[rsrtbl∼[{r0}] ∖ (OCC∪{fst(r)})]⊆rsrtbl∼[{r0}] ∖ (OCC∪{fst(r)})"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/act1/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p71">
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p80">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p72"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p74"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p77"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p76"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p78"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p80" org.eventb.core.prHyps=""/>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="⊤∧⊤"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="r∈dom(fst)"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_2/grd3/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p21"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p22"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p23"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p24"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p17"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p25"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p26"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p27"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p28"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p29"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p30"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p18"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p31"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p32"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p33"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p34"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p35"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p23"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p36"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p37"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p38"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p30"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p39"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p31"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p40"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p32"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p41"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p33"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p42"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p34"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p43"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p35"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44">
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p4,p12,p16,p19,p9,p13,p5,p8,p10,p15,p6,p24,p36,p37,p38,p39,p40,p41,p42,p43">
+                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p45">
+                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p8"/>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p46">
+                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional image goal for rsrtbl(b)" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p8">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p47">
+                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p16">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48">
+                                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49">
+                                                                <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p49" org.eventb.core.prHyps=""/>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                    <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p50">
+                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p16"/>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="c" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="b∈OCC"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="rsrtbl(b)∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∉OCC"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="rsrtbl(b)∈resrt"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="rsrtbl(b)∈ROUTES"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬c∈OCC"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="b∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES∧rsrtbl(b)∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgGoal"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_2/inv4/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
+                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
+                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
+                <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
+                <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p1">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p15"/>
+                                        <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
+                                        <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p20"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p21"/>
+                                        <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p23"/>
+                                        <org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p25"/>
+                                        <org.eventb.core.prHypAction name="REWRITE7" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p26"/>
+                                        <org.eventb.core.prHypAction name="REWRITE8" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p27"/>
+                                        <org.eventb.core.prHypAction name="REWRITE9" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p28"/>
+                                        <org.eventb.core.prHypAction name="REWRITE10" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p29"/>
+                                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p30"/>
+                                                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p31"/>
+                                                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p32"/>
+                                                <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p33"/>
+                                                <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p26" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p34"/>
+                                                <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p27" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p35"/>
+                                                <org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p28" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p36"/>
+                                                <org.eventb.core.prHypAction name="REWRITE7" org.eventb.core.prHidden="p29" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p37"/>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="c" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="OCC⊆resbl∧c∈resbl"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="OCC∪{c}⊆resbl"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬c∈OCC"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤∧c∈resbl"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩rsrtbl∼[{r}]⊆OCC">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩rsrtbl∼[{r}]⊆OCC">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈resbl"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩rsrtbl∼[{r}]⊆OCC">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∉OCC"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_2/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p26"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p27"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p20"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p28"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p29"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p31"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p32"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p33"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p34"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p35"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p36"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p25"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p37"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p38"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p26"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p39"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p27"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p40"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p28"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p42"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p43"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p32"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p44"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p45"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p36"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p46"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p37"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p47"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p38"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p48"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p39"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p49"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p40"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51">
+                                        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p2,p10,p15,p18,p7,p11,p3,p6,p22,p14,p4,p23,p24,p8,p13,p1,p29,p42,p43,p44,p45,p46,p47,p48,p49">
+                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="c" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="b∈OCC"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="rsrtbl(b)∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∉OCC"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ (OCC∪{c}))=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ (OCC∪{c}))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ (OCC∪{c}))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="b ↦ c∈nxt(rsrtbl(b))"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬c∈OCC"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ (OCC∪{c}))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_2/inv8/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ROUTES" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p5"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p8"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p7"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p18"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p21"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p22"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p2"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p23"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p4"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p6"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p26"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p27"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p13"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p28"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p17"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p29"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p19"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p30"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p21"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p31"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p23"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35">
+                                        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="c" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ (OCC∪{c})]⊆rsrtbl∼[{r}] ∖ (OCC∪{c})"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ (OCC∪{c})]⊆rsrtbl∼[{r}] ∖ (OCC∪{c})"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ (OCC∪{c})]⊆rsrtbl∼[{r}] ∖ (OCC∪{c})"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="(nxt(r))[rsrtbl∼[{r}] ∖ (OCC∪{c})]⊆rsrtbl∼[{r}] ∖ (OCC∪{c})">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="c∉OCC"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬c∈OCC"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE/grd2/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p20"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p21"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p22"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p23"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p25"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p26"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p27"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p28"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p29"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p30"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p31"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p32"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p33"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p35"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p25"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p36"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p28"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p37"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p29"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p38"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p30"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p39"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p31"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p40"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p32"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p41"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p33"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42">
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p4,p12,p16,p18,p9,p13,p5,p8,p10,p15,p6,p34,p35,p36,p37,p38,p39,p40,p41">
+                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p43">
+                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p8"/>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p44">
+                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional image goal for rsrtbl(b)" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p8">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p45">
+                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p16">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p46">
+                                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47">
+                                                                <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p47" org.eventb.core.prHyps=""/>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                    <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p48">
+                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="p16"/>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="b∈OCC"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="rsrtbl(b)∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="rsrtbl(b)∈resrt"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="rsrtbl(b)∈ROUTES"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="b∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES∧rsrtbl(b)∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgGoal"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE/grd3/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p18"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p23"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p25"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p26"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p27"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p28"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p29"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p16"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p30"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p20"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p31"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p25"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p26"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p35"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p27"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p36">
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with n=nxt(rsrtbl(b))" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p2">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p38"/>
+                                                <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p36"/>
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional image goal for rsrtbl(b)" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p4">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p40">
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional image goal for rsrtbl(b)" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p5">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p41">
+                                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional image goal for nxt(rsrtbl(b))" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p3">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p42">
+                                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional image goal for nxt(rsrtbl(b))" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p1">
+                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p43">
+                                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p42"/>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="n" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="n=nxt(rsrtbl(b))"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="rsrtbl(b)∈resrt"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="b∈dom(n)"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="nxt(rsrtbl(b))∈ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="nxt(rsrtbl(b))∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="n∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="rsrtbl(b)∈ROUTES"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="nxt(rsrtbl(b))∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="b∈dom(n)⇒n∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funImgGoal"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE/grd4/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p10,p25">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p28"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p29"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p30"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p14"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
+                                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p37"/>
+                                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p18"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p38"/>
+                                <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p26"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p39"/>
+                                <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p40"/>
+                                <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p28"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p41"/>
+                                <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p29"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p42"/>
+                                <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p30"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p43"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p44"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p34"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p45"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p46"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p38"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p47"/>
+                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p39"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p48"/>
+                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p40"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p49"/>
+                                        <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p41"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p50"/>
+                                        <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p42"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p51">
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51">
+                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p51"/>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p53">
+                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with n=nxt(rsrtbl(b))" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p5">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p56">
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p54"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p55"/>
+                                                                <org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p2,p51"/>
+                                                                <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p3,p12,p17,p19,p9,p13,p4,p8,p23,p16,p6,p5,p25,p10,p15,p1,p2,p24,p43,p44,p45,p46,p47,p48,p49,p50,p51,p54,p55">
+                                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="n" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="(b∈ran(n)⇒b∈dom(n∼)∧n∼∈BLOCKS ⇸ BLOCKS)∧(b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒⊤∧⊤)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="n=nxt(rsrtbl(b))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="b∈OCC"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="rsrtbl(b)∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))⇒nxt(rsrtbl(b))(b)∈OCC"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(b∈ran(n)⇒b∈dom(n∼)∧n∼∈BLOCKS ⇸ BLOCKS)∧(b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒rsrtbl∈BLOCKS ⇸ ROUTES∧b∈dom(rsrtbl))"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="b∈dom(n)⇒n(b)∈OCC"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="b∈ran(n)⇒b∈ran(n)∧n∼∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="n∼∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="b∈ran(n)"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="(nxt(rsrtbl(b)))∼∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="b∈dom(n)⇒n∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="b∈ran(n)∧n∼∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p27,p11,p29" org.eventb.core.prInfHyps="p30"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p29"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p31"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p32"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p23"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p33"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p34"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p35"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p30"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p36"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p37"/>
+                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p38"/>
+                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p15"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
+                                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p40"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p41"/>
+                                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p19"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p42"/>
+                                <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p28"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p43"/>
+                                <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p44"/>
+                                <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p31"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p45"/>
+                                <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p32"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p46"/>
+                                <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p33"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p47"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p37"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p48"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p38"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p49"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p41"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p50"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p42"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p51"/>
+                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p43"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p52"/>
+                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p44"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p53"/>
+                                        <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p45"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p54"/>
+                                        <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p46"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with n=nxt(rsrtbl(b))" org.eventb.core.prHyps="p5">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p55"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p56"/>
+                                                <org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p2,p34"/>
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p13,p18,p21,p10,p14,p4,p9,p25,p17,p6,p5,p27,p11,p16,p1,p2,p26,p34,p35,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56">
+                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="n" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="n=nxt(rsrtbl(b))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="b∈OCC"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="rsrtbl(b)∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))⇒nxt(rsrtbl(b))(b)∈OCC"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒⊤∧⊤"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒rsrtbl∈BLOCKS ⇸ ROUTES∧b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="b∈dom(n)⇒n(b)∈OCC"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="b∈ran(n)⇒b∈ran(n)∧n∼∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="{b} ⩤ rsrtbl∈resbl ∖ {b} → resrt"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒rsrtbl(n∼(b))≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)⇒¬rsrtbl((nxt(rsrtbl(b)))∼(b))=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="b∈ran(n)⇒b∈dom(n∼)∧n∼∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒¬rsrtbl(n∼(b))=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="b∈dom(n)⇒n∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6,p7,p8" org.eventb.core.prInfHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p4"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p19"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p21"/>
+                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p20"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p23"/>
+                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p25"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p27"/>
+                                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p26"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p29"/>
+                                <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p28"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p31"/>
+                                <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p30"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p11"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p13"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p15"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p35"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p36"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p23"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p37"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p27"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p38"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p29"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p39"/>
+                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p31"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p40"/>
+                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p32"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p41"/>
+                                        <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p33"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p42"/>
+                                        <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p34"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with n=nxt(rsrtbl(b))" org.eventb.core.prHyps="p2">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p43"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p44"/>
+                                                <org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p1,p16"/>
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p5,p3,p2,p43,p44">
+                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="n" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="b∈dom(n)⇒n(b)∈OCC"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="n=nxt(rsrtbl(b))"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="b∈OCC"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="b∈ran(n)⇒b∈ran(n)∧n∼∈BLOCKS ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒rsrtbl(n∼(b))≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)⇒¬rsrtbl((nxt(rsrtbl(b)))∼(b))=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))⇒nxt(rsrtbl(b))(b)∈OCC"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="b∈ran(n)⇒b∈dom(n∼)∧n∼∈BLOCKS ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒⊤∧⊤"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="{b} ⩤ rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒¬rsrtbl(n∼(b))=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒rsrtbl∈BLOCKS ⇸ ROUTES∧b∈dom(rsrtbl)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p27,p11,p29" org.eventb.core.prInfHyps="p30"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p29"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p31"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p32"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p23"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p33"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p34"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p35"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p30"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p36"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p37"/>
+                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p38"/>
+                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p15"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
+                                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p40"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p41"/>
+                                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p19"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p42"/>
+                                <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p28"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p43"/>
+                                <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p44"/>
+                                <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p31"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p45"/>
+                                <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p32"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p46"/>
+                                <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p33"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p47"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p37"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p48"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p38"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p49"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p41"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p50"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p42"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p51"/>
+                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p43"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p52"/>
+                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p44"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p53"/>
+                                        <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p45"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p54"/>
+                                        <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p46"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with n=nxt(rsrtbl(b))" org.eventb.core.prHyps="p5">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p55"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p56"/>
+                                                <org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p2,p34"/>
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p13,p18,p21,p10,p14,p4,p9,p25,p17,p6,p5,p27,p11,p16,p1,p2,p26,p34,p35,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56">
+                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="n" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="n=nxt(rsrtbl(b))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="b∈OCC"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="rsrtbl(b)∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))⇒nxt(rsrtbl(b))(b)∈OCC"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒⊤∧⊤"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="OCC ∖ {b}⊆resbl ∖ {b}"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒rsrtbl∈BLOCKS ⇸ ROUTES∧b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="b∈dom(n)⇒n(b)∈OCC"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="b∈ran(n)⇒b∈ran(n)∧n∼∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒rsrtbl(n∼(b))≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)⇒¬rsrtbl((nxt(rsrtbl(b)))∼(b))=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="b∈ran(n)⇒b∈dom(n∼)∧n∼∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒¬rsrtbl(n∼(b))=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="b∈dom(n)⇒n∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE/inv6/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="ROUTES" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2,p3,p4" org.eventb.core.prInfHyps="p5"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p10"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p17"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
+                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p18"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p21"/>
+                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p20"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p23"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p25"/>
+                                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p27"/>
+                                <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p26"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p29"/>
+                                <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p28"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p30"/>
+                                <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p7"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p31"/>
+                                <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p9"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p11"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p34"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p35"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p21"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p36"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p25"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p37"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p27"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p38"/>
+                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p29"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p39"/>
+                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p30"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p40"/>
+                                        <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p31"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p41"/>
+                                        <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p32"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43">
+                                                <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with n=nxt(rsrtbl(b))" org.eventb.core.prHyps="p1">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p45"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p46"/>
+                                                        <org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p13,p44"/>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="n" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="b∈dom(n)⇒n(b)∈OCC"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="n=nxt(rsrtbl(b))"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="b∈ran(n)⇒b∈ran(n)∧n∼∈BLOCKS ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ (rsrtbl∼[{r}] ∖ {b})]∩((rsrtbl∼[{r}] ∖ {b}) ∖ (OCC ∖ {b}))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒rsrtbl(n∼(b))≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ (rsrtbl∼[{r}] ∖ {b})]∩((rsrtbl∼[{r}] ∖ {b}) ∖ (OCC ∖ {b}))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ (rsrtbl∼[{r}] ∖ {b})]∩((rsrtbl∼[{r}] ∖ {b}) ∖ (OCC ∖ {b}))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="(nxt(r))[rtbl∼[{r}] ∖ (rsrtbl∼[{r}] ∖ {b})]∩((rsrtbl∼[{r}] ∖ {b}) ∖ (OCC ∖ {b}))=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)⇒¬rsrtbl((nxt(rsrtbl(b)))∼(b))=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))⇒nxt(rsrtbl(b))(b)∈OCC"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="b∈ran(n)⇒b∈dom(n∼)∧n∼∈BLOCKS ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒⊤∧⊤"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒¬rsrtbl(n∼(b))=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒rsrtbl∈BLOCKS ⇸ ROUTES∧b∈dom(rsrtbl)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ ({b} ⩤ rsrtbl)∼[{r}]]∩(({b} ⩤ rsrtbl)∼[{r}] ∖ (OCC ∖ {b}))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="ROUTES" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6,p7,p8" org.eventb.core.prInfHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p4"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
+                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p21"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
+                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p23"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p25"/>
+                                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p26"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p28"/>
+                                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p27"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p29"/>
+                                <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p5"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p31"/>
+                                <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p30"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p11"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p13"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p15"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p36"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p22"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p37"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p24"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p38"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p28"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p39"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p29"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p40"/>
+                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p31"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p41"/>
+                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p32"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p42"/>
+                                        <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p33"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p43"/>
+                                        <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p34"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45">
+                                                <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with n=nxt(rsrtbl(b))" org.eventb.core.prHyps="p2">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p46"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p47"/>
+                                                        <org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p16,p1"/>
+                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3 SMT2" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p3,p2,p39,p46,p47">
+                                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
+                                                            <org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3 SMT2"/>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="n" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="b∈dom(n)⇒n(b)∈OCC"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[({b} ⩤ rsrtbl)∼[{r}]]⊆({b} ⩤ rsrtbl)∼[{r}]"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="n=nxt(rsrtbl(b))"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="b∈OCC"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="b∈ran(n)⇒b∈ran(n)∧n∼∈BLOCKS ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ {b}]⊆rsrtbl∼[{r}] ∖ {b}"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒rsrtbl(n∼(b))≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ {b}]⊆rsrtbl∼[{r}] ∖ {b}"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)⇒¬rsrtbl((nxt(rsrtbl(b)))∼(b))=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))⇒nxt(rsrtbl(b))(b)∈OCC"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="b∈ran(n)⇒b∈dom(n∼)∧n∼∈BLOCKS ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒⊤∧⊤"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ {b}]⊆rsrtbl∼[{r}] ∖ {b}"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒¬rsrtbl(n∼(b))=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒rsrtbl∈BLOCKS ⇸ ROUTES∧b∈dom(rsrtbl)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="(nxt(r))[rsrtbl∼[{r}] ∖ {b}]⊆rsrtbl∼[{r}] ∖ {b}">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE/inv8/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="ROUTES" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6,p7,p8" org.eventb.core.prInfHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
+                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p21"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
+                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p23"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p25"/>
+                                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p26"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p28"/>
+                                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p27"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p30"/>
+                                <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p29"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p31"/>
+                                <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p2"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p11"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p13"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p15"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p36"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p22"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p37"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p24"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p38"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p28"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p39"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p30"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p40"/>
+                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p31"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p41"/>
+                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p32"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p42"/>
+                                        <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p33"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p43"/>
+                                        <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p34"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45">
+                                                <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with n=nxt(rsrtbl(b))" org.eventb.core.prHyps="p3">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p46"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p47"/>
+                                                        <org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p16,p1"/>
+                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3 SMT2" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p4,p3,p40,p46,p47">
+                                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
+                                                            <org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3 SMT2"/>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="n" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[(rsrtbl∼[{r}] ∖ {b}) ∖ (OCC ∖ {b})]⊆(rsrtbl∼[{r}] ∖ {b}) ∖ (OCC ∖ {b})"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="b∈dom(n)⇒n(b)∈OCC"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="n=nxt(rsrtbl(b))"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="b∈OCC"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="b∈ran(n)⇒b∈ran(n)∧n∼∈BLOCKS ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒rsrtbl(n∼(b))≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[(rsrtbl∼[{r}] ∖ {b}) ∖ (OCC ∖ {b})]⊆(rsrtbl∼[{r}] ∖ {b}) ∖ (OCC ∖ {b})"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)⇒¬rsrtbl((nxt(rsrtbl(b)))∼(b))=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))⇒nxt(rsrtbl(b))(b)∈OCC"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="b∈ran(n)⇒b∈dom(n∼)∧n∼∈BLOCKS ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒⊤∧⊤"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="(nxt(r))[(rsrtbl∼[{r}] ∖ {b}) ∖ (OCC ∖ {b})]⊆(rsrtbl∼[{r}] ∖ {b}) ∖ (OCC ∖ {b})">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[(rsrtbl∼[{r}] ∖ {b}) ∖ (OCC ∖ {b})]⊆(rsrtbl∼[{r}] ∖ {b}) ∖ (OCC ∖ {b})"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒¬rsrtbl(n∼(b))=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒rsrtbl∈BLOCKS ⇸ ROUTES∧b∈dom(rsrtbl)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[({b} ⩤ rsrtbl)∼[{r}] ∖ (OCC ∖ {b})]⊆({b} ⩤ rsrtbl)∼[{r}] ∖ (OCC ∖ {b})"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+</org.eventb.core.prFile>
diff --git a/Train_B_Book/train_0.bps b/Train_B_Book/train_0.bps
new file mode 100644
index 0000000000000000000000000000000000000000..733b1b4e8a30ddbc6eb92951325dbc11a085a94c
--- /dev/null
+++ b/Train_B_Book/train_0.bps
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.psFile>
+    <org.eventb.core.psStatus name="inv6/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="inv7/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="inv8/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="INITIALISATION/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="INITIALISATION/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="INITIALISATION/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="INITIALISATION/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="INITIALISATION/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="INITIALISATION/inv8/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="route_reservation/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="route_reservation/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="route_reservation/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="route_reservation/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="route_reservation/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="route_reservation/inv8/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="route_freeing/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/grd2/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/grd3/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/inv8/INV" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/act1/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_2/grd3/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_2/inv4/INV" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_2/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_2/inv8/INV" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="BACK_MOVE/grd2/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE/grd3/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE/grd4/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE/inv6/INV" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="BACK_MOVE/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="BACK_MOVE/inv8/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="true"/>
+</org.eventb.core.psFile>
diff --git a/Train_B_Book/train_0.bum b/Train_B_Book/train_0.bum
new file mode 100644
index 0000000000000000000000000000000000000000..35d347b58d6ab70c41d3ec5914e3630023500798
--- /dev/null
+++ b/Train_B_Book/train_0.bum
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.machineFile org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter" org.eventb.texttools.text_lastmodified="1390820279914" org.eventb.texttools.text_representation="machine train_0 //&#10; sees train_ctx0&#10;&#10;variables resrt // set of reserved routes&#10;          resbl // set of reserved blocks&#10;          rsrtbl // reserved route of reserved block&#10;          OCC // occupied block&#10;&#10;&#10;invariants&#10;  @inv1 resrt ⊆ ROUTES // a reserved route is a route&#10;  @inv2 resbl ⊆ BLOCKS // a reserved block is a block&#10;  @inv3 rsrtbl ∈ resbl → resrt&#10;  @inv5 rsrtbl ⊆ rtbl // the reserved route of a reserved block is a route of that block&#10;  @inv4 OCC ⊆ resbl // occupied blocks are reserved&#10;  @inv6 ∀r· r∈ROUTES ⇒ nxt(r)[rtbl∼[{r}]∖rsrtbl∼[{r}]] ∩ (rsrtbl∼[{r}]∖OCC) = ∅&#10;  @inv7 ∀r· r∈ROUTES ⇒ nxt(r)[rsrtbl∼[{r}]] ⊆ rsrtbl∼[{r}]&#10;  @inv8 ∀r· r∈ROUTES ⇒ nxt(r)[rsrtbl∼[{r}]∖OCC] ⊆ rsrtbl∼[{r}]∖OCC&#10;&#10;events&#10;  event INITIALISATION&#10;    then&#10;      @act1 resrt ≔ ∅&#10;      @act2 resbl ≔ ∅&#10;      @act3 rsrtbl ≔ ∅&#10;      @act4 OCC ≔ ∅&#10;  end&#10;&#10;  event route_reservation&#10;    any r&#10;    where&#10;      @grd1 r ∉ resrt // route not yet reserved&#10;      @grd2 rtbl∼[{r}]∩resbl = ∅ // all blocks of route r are not yet reserved&#10;    then&#10;      @act1 resrt ≔ resrt∪{r}  // reserve route&#10;      @act2 rsrtbl ≔ rsrtbl ∪ (rtbl▷{r})  // add route of r to dynamic route table rsrtbl&#10;      @act3 resbl ≔ resbl ∪ rtbl∼[{r}] // reserve all blocks of r&#10;  end&#10;&#10;  event route_freeing&#10;    any r&#10;    where&#10;      @grd1 r ∈ resrt∖ran(rsrtbl)  // r is reserved but has no more reserved blocks&#10;    then&#10;      @act1 resrt ≔ resrt∖{r}&#10;  end&#10;&#10;  event FRONT_MOVE_1 // the train enters its route&#10;    any r&#10;    where&#10;      @grd1 r ∈ resrt&#10;      @grd2 fst(r) ∈ resbl∖OCC // first block not occupied&#10;      @grd3 rsrtbl(fst(r)) = r // first block still reserved&#10;    then&#10;      @act1 OCC ≔ OCC ∪ {fst(r)}&#10;  end&#10;&#10;  event FRONT_MOVE_2 // the front of the train enters the next block on the route&#10;    any b c&#10;    where&#10;      @grd1 b∈OCC&#10;      @grd2 c∉OCC&#10;      @grd3 b↦c ∈ nxt(rsrtbl(b))&#10;    then&#10;      @act1 OCC ≔ OCC∪{c}&#10;  end&#10;&#10;  event BACK_MOVE // the back of train leaves block b and enters block n(b) or leaves&#10;    any b n&#10;    where&#10;      @grd1 b∈OCC&#10;      @grd2 n = nxt(rsrtbl(b)) // n is the next relation for the route of b&#10;      @grd3 b∈dom(n) ⇒ n(b)∈OCC&#10;      @grd4 b∈ran(n) ∧&#10;            n∼(b)∈dom(rsrtbl)&#10;            ⇒&#10;            rsrtbl(n∼(b))≠rsrtbl(b)  // any previous block must be reserved by another route&#10;    then&#10;      @act1 OCC ≔ OCC∖{b}&#10;      @act2 rsrtbl ≔ {b}⩤rsrtbl&#10;      @act3 resbl ≔ resbl∖{b}&#10;  end&#10;end&#10;" version="5">
+<org.eventb.core.seesContext name="internal_sees1" org.eventb.core.target="train_ctx0"/>
+<org.eventb.core.event name="internal_evt1" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="INITIALISATION">
+<org.eventb.core.action name="internal_act1" org.eventb.core.assignment="resrt ≔ ∅" org.eventb.core.label="act1"/>
+<org.eventb.core.action name="internal_act2" org.eventb.core.assignment="resbl ≔ ∅" org.eventb.core.label="act2"/>
+<org.eventb.core.action name="internal_act3" org.eventb.core.assignment="rsrtbl ≔ ∅" org.eventb.core.label="act3"/>
+<org.eventb.core.action name="internal_act4" org.eventb.core.assignment="OCC ≔ ∅" org.eventb.core.label="act4"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element1" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="route_reservation">
+<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="r"/>
+<org.eventb.core.guard name="internal_element1" org.eventb.core.comment="route not yet reserved" org.eventb.core.label="grd1" org.eventb.core.predicate="r ∉ resrt"/>
+<org.eventb.core.guard name="internal_element2" org.eventb.core.comment="all blocks of route r are not yet reserved" org.eventb.core.label="grd2" org.eventb.core.predicate="rtbl∼[{r}]∩resbl = ∅"/>
+<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="resrt ≔ resrt∪{r}" org.eventb.core.comment="reserve route" org.eventb.core.label="act1"/>
+<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="rsrtbl ≔ rsrtbl ∪ (rtbl▷{r})" org.eventb.core.comment="add route of r to dynamic route table rsrtbl" org.eventb.core.label="act2"/>
+<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="resbl ≔ resbl ∪ rtbl∼[{r}]" org.eventb.core.comment="reserve all blocks of r" org.eventb.core.label="act3"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element2" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="route_freeing">
+<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="r"/>
+<org.eventb.core.guard name="internal_element1" org.eventb.core.comment="r is reserved but has no more reserved blocks" org.eventb.core.label="grd1" org.eventb.core.predicate="r ∈ resrt∖ran(rsrtbl)"/>
+<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="resrt ≔ resrt∖{r}" org.eventb.core.label="act1"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element3" org.eventb.core.comment="the train enters its route" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="FRONT_MOVE_1">
+<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="r"/>
+<org.eventb.core.guard name="internal_element1" org.eventb.core.label="grd1" org.eventb.core.predicate="r ∈ resrt"/>
+<org.eventb.core.guard name="internal_element2" org.eventb.core.comment="first block not occupied" org.eventb.core.label="grd2" org.eventb.core.predicate="fst(r) ∈ resbl∖OCC"/>
+<org.eventb.core.guard name="internal_element3" org.eventb.core.comment="first block still reserved" org.eventb.core.label="grd3" org.eventb.core.predicate="rsrtbl(fst(r)) = r"/>
+<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="OCC ≔ OCC ∪ {fst(r)}" org.eventb.core.label="act1"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element4" org.eventb.core.comment="the front of the train enters the next block on the route" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="FRONT_MOVE_2">
+<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="b"/>
+<org.eventb.core.parameter name="internal_element2" org.eventb.core.identifier="c"/>
+<org.eventb.core.guard name="internal_element1" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈OCC"/>
+<org.eventb.core.guard name="internal_element2" org.eventb.core.label="grd2" org.eventb.core.predicate="c∉OCC"/>
+<org.eventb.core.guard name="internal_element3" org.eventb.core.label="grd3" org.eventb.core.predicate="b↦c ∈ nxt(rsrtbl(b))"/>
+<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="OCC ≔ OCC∪{c}" org.eventb.core.label="act1"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element5" org.eventb.core.comment="the back of train leaves block b and enters block n(b) or leaves" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="BACK_MOVE">
+<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="b"/>
+<org.eventb.core.parameter name="internal_element2" org.eventb.core.identifier="n"/>
+<org.eventb.core.guard name="internal_element1" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈OCC"/>
+<org.eventb.core.guard name="internal_element2" org.eventb.core.comment="n is the next relation for the route of b" org.eventb.core.label="grd2" org.eventb.core.predicate="n = nxt(rsrtbl(b))"/>
+<org.eventb.core.guard name="internal_element3" org.eventb.core.label="grd3" org.eventb.core.predicate="b∈dom(n) ⇒ n(b)∈OCC"/>
+<org.eventb.core.guard name="internal_element4" org.eventb.core.comment="any previous block must be reserved by another route" org.eventb.core.label="grd4" org.eventb.core.predicate="b∈ran(n) ∧&#10;            n∼(b)∈dom(rsrtbl)&#10;            ⇒&#10;            rsrtbl(n∼(b))≠rsrtbl(b)"/>
+<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="OCC ≔ OCC∖{b}" org.eventb.core.label="act1"/>
+<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="rsrtbl ≔ {b}⩤rsrtbl" org.eventb.core.label="act2"/>
+<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="resbl ≔ resbl∖{b}" org.eventb.core.label="act3"/>
+</org.eventb.core.event>
+<org.eventb.core.invariant name="internal_inv1I" org.eventb.core.comment="a reserved route is a route" org.eventb.core.label="inv1" org.eventb.core.predicate="resrt ⊆ ROUTES"/>
+<org.eventb.core.invariant name="internal_inv2I" org.eventb.core.comment="a reserved block is a block" org.eventb.core.label="inv2" org.eventb.core.predicate="resbl ⊆ BLOCKS"/>
+<org.eventb.core.invariant name="internal_inv3I" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl ∈ resbl → resrt"/>
+<org.eventb.core.invariant name="internal_inv5I" org.eventb.core.comment="the reserved route of a reserved block is a route of that block" org.eventb.core.label="inv5" org.eventb.core.predicate="rsrtbl ⊆ rtbl"/>
+<org.eventb.core.invariant name="internal_inv4I" org.eventb.core.comment="occupied blocks are reserved" org.eventb.core.label="inv4" org.eventb.core.predicate="OCC ⊆ resbl"/>
+<org.eventb.core.invariant name="internal_element1I" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r· r∈ROUTES ⇒ nxt(r)[rtbl∼[{r}]∖rsrtbl∼[{r}]] ∩ (rsrtbl∼[{r}]∖OCC) = ∅"/>
+<org.eventb.core.invariant name="internal_element2I" org.eventb.core.label="inv7" org.eventb.core.predicate="∀r· r∈ROUTES ⇒ nxt(r)[rsrtbl∼[{r}]] ⊆ rsrtbl∼[{r}]"/>
+<org.eventb.core.invariant name="internal_element3I" org.eventb.core.label="inv8" org.eventb.core.predicate="∀r· r∈ROUTES ⇒ nxt(r)[rsrtbl∼[{r}]∖OCC] ⊆ rsrtbl∼[{r}]∖OCC"/>
+<org.eventb.core.variable name="internal_var1" org.eventb.core.comment="set of reserved routes" org.eventb.core.identifier="resrt"/>
+<org.eventb.core.variable name="internal_var2" org.eventb.core.comment="set of reserved blocks" org.eventb.core.identifier="resbl"/>
+<org.eventb.core.variable name="internal_var3" org.eventb.core.comment="reserved route of reserved block" org.eventb.core.identifier="rsrtbl"/>
+<org.eventb.core.variable name="internal_var4" org.eventb.core.comment="occupied block" org.eventb.core.identifier="OCC"/>
+</org.eventb.core.machineFile>
diff --git a/Train_B_Book/train_0_prob.bcm b/Train_B_Book/train_0_prob.bcm
new file mode 100644
index 0000000000000000000000000000000000000000..b94694bc62ea5c140d5bbf45558844f408417c9c
--- /dev/null
+++ b/Train_B_Book/train_0_prob.bcm
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scMachineFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter">
+    <org.eventb.core.scRefinesMachine name="'" org.eventb.core.scTarget="/Train/train_0.bcm" org.eventb.core.source="/Train/train_0_prob.bum|org.eventb.core.machineFile#train_0_prob|org.eventb.core.refinesMachine#'"/>
+    <org.eventb.core.scSeesContext name="(" org.eventb.core.scTarget="/Train/train_ctx0_prob.bcc" org.eventb.core.source="/Train/train_0_prob.bum|org.eventb.core.machineFile#train_0_prob|org.eventb.core.seesContext#_7JfEcIdmEeOcUOZ5WAG6MA"/>
+    <org.eventb.core.scInternalContext name="train_ctx0">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx0_prob">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.extendsContext#'"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm44" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4thEYdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx2" org.eventb.core.label="axm45" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIIdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx3" org.eventb.core.label="axm14" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIYdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx4" org.eventb.core.label="axm40" org.eventb.core.predicate="nxt={R1 ↦ {A ↦ B,B ↦ C},R2 ↦ {A ↦ B,B ↦ D,D ↦ E,E ↦ F},R3 ↦ {H ↦ G,G ↦ E,E ↦ F},R4 ↦ {I ↦ G,G ↦ E,E ↦ F},R5 ↦ {C ↦ B,B ↦ A},R6 ↦ {F ↦ E,E ↦ D,D ↦ B,B ↦ A},R7 ↦ {F ↦ E,E ↦ G,G ↦ H},R8 ↦ {F ↦ E,E ↦ G,G ↦ I}}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMIdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx5" org.eventb.core.label="axm41" org.eventb.core.predicate="fst={R1 ↦ A,R2 ↦ A,R3 ↦ H,R4 ↦ I,R5 ↦ C,R6 ↦ F,R7 ↦ F,R8 ↦ F}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMYdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx6" org.eventb.core.label="axm42" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ F,R3 ↦ F,R4 ↦ F,R5 ↦ A,R6 ↦ A,R7 ↦ H,R8 ↦ I}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvModmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="A" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4qdwYdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="B" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4qdwodmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="C" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rE0IdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="D" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rE0YdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="E" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rE0odmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="F" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr4IdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="G" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr4YdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="H" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr4odmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="I" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr44dmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="R1" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4sS8IdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R2" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4sS8YdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R3" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4sS8odmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R4" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6AIdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R5" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6AYdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R6" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6AodmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R7" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6A4dmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R8" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4thEIdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInvariant name="train_ctx1" org.eventb.core.label="inv1" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx2" org.eventb.core.label="inv2" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx3" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx4" org.eventb.core.label="inv5" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx5" org.eventb.core.label="inv4" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx6" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx7" org.eventb.core.label="inv7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx8" org.eventb.core.label="inv8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scVariable name="resrt" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_0_prob.bum|org.eventb.core.machineFile#train_0_prob|org.eventb.core.variable#internal_var1" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="OCC" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_0_prob.bum|org.eventb.core.machineFile#train_0_prob|org.eventb.core.variable#internal_var4" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="resbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_0_prob.bum|org.eventb.core.machineFile#train_0_prob|org.eventb.core.variable#internal_var2" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="rsrtbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_0_prob.bum|org.eventb.core.machineFile#train_0_prob|org.eventb.core.variable#internal_var3" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+    <org.eventb.core.scEvent name="train_ctx0_proc" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION" org.eventb.core.source="/Train/train_0_prob.bum|org.eventb.core.machineFile#train_0_prob|org.eventb.core.event#internal_sees2">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_0.bcm|org.eventb.core.scMachineFile#train_0|org.eventb.core.scEvent#train_ctx9" org.eventb.core.source="/Train/train_0_prob.bum|org.eventb.core.machineFile#train_0_prob|org.eventb.core.event#internal_sees2"/>
+        <org.eventb.core.scAction name="'" org.eventb.core.assignment="resrt ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act1"/>
+        <org.eventb.core.scAction name="(" org.eventb.core.assignment="resbl ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act2"/>
+        <org.eventb.core.scAction name=")" org.eventb.core.assignment="rsrtbl ≔ ∅ ⦂ ℙ(BLOCKS×ROUTES)" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act3"/>
+        <org.eventb.core.scAction name="*" org.eventb.core.assignment="OCC ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act4"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_prod" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation" org.eventb.core.source="/Train/train_0_prob.bum|org.eventb.core.machineFile#train_0_prob|org.eventb.core.event#internal_sees3">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_0.bcm|org.eventb.core.scMachineFile#train_0|org.eventb.core.scEvent#train_ctx:" org.eventb.core.source="/Train/train_0_prob.bum|org.eventb.core.machineFile#train_0_prob|org.eventb.core.event#internal_sees3|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="rsrtbl ≔ rsrtbl∪(rtbl ▷ {r})" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="u" org.eventb.core.assignment="resbl ≔ resbl∪rtbl∼[{r}]" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_proe" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing" org.eventb.core.source="/Train/train_0_prob.bum|org.eventb.core.machineFile#train_0_prob|org.eventb.core.event#internal_sees4">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_0.bcm|org.eventb.core.scMachineFile#train_0|org.eventb.core.scEvent#train_ctx;" org.eventb.core.source="/Train/train_0_prob.bum|org.eventb.core.machineFile#train_0_prob|org.eventb.core.event#internal_sees4|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt ∖ {r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_prof" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_1" org.eventb.core.source="/Train/train_0_prob.bum|org.eventb.core.machineFile#train_0_prob|org.eventb.core.event#internal_sees5">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_0.bcm|org.eventb.core.scMachineFile#train_0|org.eventb.core.scEvent#train_ctx=" org.eventb.core.source="/Train/train_0_prob.bum|org.eventb.core.machineFile#train_0_prob|org.eventb.core.event#internal_sees5|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="fst(r)∈resbl ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3" org.eventb.core.predicate="rsrtbl(fst(r))=r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="OCC ≔ OCC∪{fst(r)}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_prog" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_2" org.eventb.core.source="/Train/train_0_prob.bum|org.eventb.core.machineFile#train_0_prob|org.eventb.core.event#internal_sees6">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_0.bcm|org.eventb.core.scMachineFile#train_0|org.eventb.core.scEvent#train_ctx&gt;" org.eventb.core.source="/Train/train_0_prob.bum|org.eventb.core.machineFile#train_0_prob|org.eventb.core.event#internal_sees6|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="c∉OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3" org.eventb.core.predicate="b ↦ c∈nxt(rsrtbl(b))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="OCC ≔ OCC∪{c}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scParameter name="c" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.parameter#internal_element2" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_proh" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE" org.eventb.core.source="/Train/train_0_prob.bum|org.eventb.core.machineFile#train_0_prob|org.eventb.core.event#internal_sees7">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_0.bcm|org.eventb.core.scMachineFile#train_0|org.eventb.core.scEvent#train_ctx?" org.eventb.core.source="/Train/train_0_prob.bum|org.eventb.core.machineFile#train_0_prob|org.eventb.core.event#internal_sees7|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="n=nxt(rsrtbl(b))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd3" org.eventb.core.predicate="b∈dom(n)⇒n(b)∈OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd4" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒rsrtbl(n∼(b))≠rsrtbl(b)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element4" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="o" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="p" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="q" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scParameter name="n" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.parameter#internal_element2" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+    </org.eventb.core.scEvent>
+</org.eventb.core.scMachineFile>
diff --git a/Train_B_Book/train_0_prob.bpo b/Train_B_Book/train_0_prob.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..06e385a98debe17fa284992bfaee0f9c8bc30f0e
--- /dev/null
+++ b/Train_B_Book/train_0_prob.bpo
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTET" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEU" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEV" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEW" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEX" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEY" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEZ" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="ROUTE[" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+        <org.eventb.core.poPredicate name="ROUTE\" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poPredicate name="ROUTE]" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poPredicate name="ROUTE^" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poPredicate name="ROUTE_" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poPredicate name="ROUTE`" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+        <org.eventb.core.poIdentifier name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="R1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R2" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R3" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R4" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R5" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R6" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R7" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R8" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poPredicate name="ROUTEa" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4thEYdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEb" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIIdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEc" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIYdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEd" org.eventb.core.predicate="nxt={R1 ↦ {A ↦ B,B ↦ C},R2 ↦ {A ↦ B,B ↦ D,D ↦ E,E ↦ F},R3 ↦ {H ↦ G,G ↦ E,E ↦ F},R4 ↦ {I ↦ G,G ↦ E,E ↦ F},R5 ↦ {C ↦ B,B ↦ A},R6 ↦ {F ↦ E,E ↦ D,D ↦ B,B ↦ A},R7 ↦ {F ↦ E,E ↦ G,G ↦ H},R8 ↦ {F ↦ E,E ↦ G,G ↦ I}}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMIdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEe" org.eventb.core.predicate="fst={R1 ↦ A,R2 ↦ A,R3 ↦ H,R4 ↦ I,R5 ↦ C,R6 ↦ F,R7 ↦ F,R8 ↦ F}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMYdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEf" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ F,R3 ↦ F,R4 ↦ F,R5 ↦ A,R6 ↦ A,R7 ↦ H,R8 ↦ I}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvModmEeOcUOZ5WAG6MA"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/Train/train_0_prob.bpo|org.eventb.core.poFile#train_0_prob|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poPredicate name="rsrtbm" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I"/>
+        <org.eventb.core.poPredicate name="rsrtbn" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I"/>
+        <org.eventb.core.poPredicate name="rsrtbo" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I"/>
+        <org.eventb.core.poPredicate name="rsrtbp" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I"/>
+        <org.eventb.core.poPredicate name="rsrtbq" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poPredicate name="rsrtbr" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtbs" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtbt" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_proc" org.eventb.core.parentSet="/Train/train_0_prob.bpo|org.eventb.core.poFile#train_0_prob|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_proc" org.eventb.core.parentSet="/Train/train_0_prob.bpo|org.eventb.core.poFile#train_0_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_proc" org.eventb.core.poStamp="0"/>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_prod" org.eventb.core.parentSet="/Train/train_0_prob.bpo|org.eventb.core.poFile#train_0_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_prod" org.eventb.core.parentSet="/Train/train_0_prob.bpo|org.eventb.core.poFile#train_0_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_prod" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_proe" org.eventb.core.parentSet="/Train/train_0_prob.bpo|org.eventb.core.poFile#train_0_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_proe" org.eventb.core.parentSet="/Train/train_0_prob.bpo|org.eventb.core.poFile#train_0_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_proe" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_prof" org.eventb.core.parentSet="/Train/train_0_prob.bpo|org.eventb.core.poFile#train_0_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_prof" org.eventb.core.parentSet="/Train/train_0_prob.bpo|org.eventb.core.poFile#train_0_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_prof" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="fst(r)∈resbl ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="rsrtbl(fst(r))=r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_prog" org.eventb.core.parentSet="/Train/train_0_prob.bpo|org.eventb.core.poFile#train_0_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="c" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_prog" org.eventb.core.parentSet="/Train/train_0_prob.bpo|org.eventb.core.poFile#train_0_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_prog" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="c∉OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="b ↦ c∈nxt(rsrtbl(b))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_proh" org.eventb.core.parentSet="/Train/train_0_prob.bpo|org.eventb.core.poFile#train_0_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="n" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_proh" org.eventb.core.parentSet="/Train/train_0_prob.bpo|org.eventb.core.poFile#train_0_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_proh" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="n=nxt(rsrtbl(b))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="b∈dom(n)⇒n(b)∈OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="b∈ran(n)∧n∼(b)∈dom(rsrtbl)⇒rsrtbl(n∼(b))≠rsrtbl(b)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element4"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_0_prob.bpo|org.eventb.core.poFile#train_0_prob|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0"/>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_0_prob.bpr b/Train_B_Book/train_0_prob.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..d13ec2a20267852024def0758a1effc175861a98
--- /dev/null
+++ b/Train_B_Book/train_0_prob.bpr
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.prFile version="1"/>
\ No newline at end of file
diff --git a/Train_B_Book/train_0_prob.bps b/Train_B_Book/train_0_prob.bps
new file mode 100644
index 0000000000000000000000000000000000000000..ced513e210f482c3c7cafb26e5e709e8b27ac922
--- /dev/null
+++ b/Train_B_Book/train_0_prob.bps
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.psFile/>
\ No newline at end of file
diff --git a/Train_B_Book/train_0_prob.bum b/Train_B_Book/train_0_prob.bum
new file mode 100644
index 0000000000000000000000000000000000000000..a2be207b7585578bba882ed7fcda3dc9e0801a66
--- /dev/null
+++ b/Train_B_Book/train_0_prob.bum
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.machineFile org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter" org.eventb.texttools.text_lastmodified="1390836187679" org.eventb.texttools.text_representation="machine train_0_prob refines train_0  sees train_ctx0_prob&#10;&#10;variables resrt // set of reserved routes&#10;          resbl // set of reserved blocks&#10;          rsrtbl // reserved route of reserved block&#10;          OCC // occupied block&#10;&#10;&#10;events&#10;  event INITIALISATION extends INITIALISATION&#10;  end&#10;&#10;  event route_reservation extends route_reservation&#10;  end&#10;&#10;  event route_freeing extends route_freeing&#10;  end&#10;&#10;  event FRONT_MOVE_1 // the train enters its route&#10;  extends FRONT_MOVE_1&#10;  end&#10;&#10;  event FRONT_MOVE_2 // the front of the train enters the next block on the route&#10;  extends FRONT_MOVE_2&#10;  end&#10;&#10;  event BACK_MOVE // the back of train leaves block b and enters block n(b) or leaves&#10;  extends BACK_MOVE&#10;  end&#10;end&#10;" version="5">
+<org.eventb.core.refinesMachine name="'" org.eventb.core.target="train_0"/>
+<org.eventb.core.seesContext name="_7JfEcIdmEeOcUOZ5WAG6MA" org.eventb.core.target="train_ctx0_prob"/>
+<org.eventb.core.variable name="internal_var1" org.eventb.core.comment="set of reserved routes" org.eventb.core.identifier="resrt"/>
+<org.eventb.core.variable name="internal_var2" org.eventb.core.comment="set of reserved blocks" org.eventb.core.identifier="resbl"/>
+<org.eventb.core.variable name="internal_var3" org.eventb.core.comment="reserved route of reserved block" org.eventb.core.identifier="rsrtbl"/>
+<org.eventb.core.variable name="internal_var4" org.eventb.core.comment="occupied block" org.eventb.core.identifier="OCC"/>
+<org.eventb.core.event name="internal_sees2" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION"/>
+<org.eventb.core.event name="internal_sees3" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="route_reservation"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_sees4" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="route_freeing"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_sees5" org.eventb.core.comment="the train enters its route" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_1">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="FRONT_MOVE_1"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_sees6" org.eventb.core.comment="the front of the train enters the next block on the route" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_2">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="FRONT_MOVE_2"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_sees7" org.eventb.core.comment="the back of train leaves block b and enters block n(b) or leaves" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="BACK_MOVE"/>
+</org.eventb.core.event>
+</org.eventb.core.machineFile>
diff --git a/Train_B_Book/train_1.bcm b/Train_B_Book/train_1.bcm
new file mode 100644
index 0000000000000000000000000000000000000000..45f927bae7f81125ef9ae5c431ca81d92ec7ec00
--- /dev/null
+++ b/Train_B_Book/train_1.bcm
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scMachineFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter">
+    <org.eventb.core.scRefinesMachine name="'" org.eventb.core.scTarget="/Train/train_0.bcm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.refinesMachine#internal_refines1"/>
+    <org.eventb.core.scSeesContext name="(" org.eventb.core.scTarget="/Train/train_ctx0.bcc" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.seesContext#internal_sees1"/>
+    <org.eventb.core.scInternalContext name="train_ctx0">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInvariant name="train_ctx1" org.eventb.core.label="inv1" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx2" org.eventb.core.label="inv2" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx3" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx4" org.eventb.core.label="inv5" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx5" org.eventb.core.label="inv4" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx6" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx7" org.eventb.core.label="inv7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx8" org.eventb.core.label="inv8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx9" org.eventb.core.label="inv1" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx:" org.eventb.core.label="inv2" org.eventb.core.predicate="frm⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx;" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx=" org.eventb.core.label="inv4" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx&gt;" org.eventb.core.label="inv5" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx?" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx@" org.eventb.core.label="inv7" org.eventb.core.predicate="LBT⊆OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxA" org.eventb.core.label="inv8" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxB" org.eventb.core.label="thm1" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxC" org.eventb.core.label="thm2" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxD" org.eventb.core.label="thm3" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scVariable name="resrt" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.variable#internal_var1" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="OCC" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.variable#internal_var4" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="resbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.variable#internal_var2" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="frm" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.variable#internal_element2" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="TRK" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.variable#internal_element1" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+    <org.eventb.core.scVariable name="LBT" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.variable#internal_element3" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="rsrtbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.variable#internal_var3" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+    <org.eventb.core.scEvent name="train_ctxE" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="INITIALISATION" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_0.bcm|org.eventb.core.scMachineFile#train_0|org.eventb.core.scEvent#train_ctx9" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.scAction name="(" org.eventb.core.assignment="resrt ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act1"/>
+        <org.eventb.core.scAction name=")" org.eventb.core.assignment="resbl ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act2"/>
+        <org.eventb.core.scAction name="*" org.eventb.core.assignment="rsrtbl ≔ ∅ ⦂ ℙ(BLOCKS×ROUTES)" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act3"/>
+        <org.eventb.core.scAction name="+" org.eventb.core.assignment="OCC ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act4"/>
+        <org.eventb.core.scAction name="," org.eventb.core.assignment="TRK ≔ ∅ ⦂ ℙ(BLOCKS×BLOCKS)" org.eventb.core.label="act5" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="-" org.eventb.core.assignment="frm ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act6" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="." org.eventb.core.assignment="LBT ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act7" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element3"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxF" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element1">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_0.bcm|org.eventb.core.scMachineFile#train_0|org.eventb.core.scEvent#train_ctx:" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element1|org.eventb.core.refinesEvent#internal_refines1"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="rsrtbl ≔ rsrtbl∪(rtbl ▷ {r})" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="u" org.eventb.core.assignment="resbl ≔ resbl∪rtbl∼[{r}]" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxG" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element2">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_0.bcm|org.eventb.core.scMachineFile#train_0|org.eventb.core.scEvent#train_ctx;" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element2|org.eventb.core.refinesEvent#internal_refines1"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt ∖ {r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="frm ≔ frm ∖ {r}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element2"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxH" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="FRONT_MOVE_1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_0.bcm|org.eventb.core.scMachineFile#train_0|org.eventb.core.scEvent#train_ctx=" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.refinesEvent#_Gq6UgYdMEeOSfLkA9HaR6w"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStMYdPEeOSfLkA9HaR6w" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="fst(r)∈resbl ∖ OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStModPEeOSfLkA9HaR6w" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="rsrtbl(fst(r))=r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdTUQIdPEeOSfLkA9HaR6w" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.parameter#_QdStMIdPEeOSfLkA9HaR6w" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="OCC ≔ OCC∪{fst(r)}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.action#_QdTUQYdPEeOSfLkA9HaR6w"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="LBT ≔ LBT∪{fst(r)}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element2"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxI" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="FRONT_MOVE_2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_0.bcm|org.eventb.core.scMachineFile#train_0|org.eventb.core.scEvent#train_ctx&gt;" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.refinesEvent#_Gq7ioIdMEeOSfLkA9HaR6w"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC∪{TRK(b)}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scWitness name="d" org.eventb.core.label="c" org.eventb.core.predicate="c=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.witness#internal_wit1"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxJ" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="BACK_MOVE_1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_0.bcm|org.eventb.core.scMachineFile#train_0|org.eventb.core.scEvent#train_ctx?" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.refinesEvent#internal_refines1"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∉dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="f" org.eventb.core.assignment="LBT ≔ LBT ∖ {b}" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.scWitness name="g" org.eventb.core.label="n" org.eventb.core.predicate="n=nxt(rsrtbl(b))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.witness#internal_wit1"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxK" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="BACK_MOVE_2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_0.bcm|org.eventb.core.scMachineFile#train_0|org.eventb.core.scEvent#train_ctx?" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.refinesEvent#internal_element1"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="f" org.eventb.core.assignment="LBT ≔ (LBT ∖ {b})∪{TRK(b)}" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.scWitness name="g" org.eventb.core.label="n" org.eventb.core.predicate="n=nxt(rsrtbl(b))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.witness#internal_wit1"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxL" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="point_positionning" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7">
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="TRK ≔ (dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.action#internal_element1"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxM" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="route_formation" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J">
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#(" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#)" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.parameter#'" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="frm ≔ frm∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.action#*"/>
+    </org.eventb.core.scEvent>
+</org.eventb.core.scMachineFile>
diff --git a/Train_B_Book/train_1.bpo b/Train_B_Book/train_1.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..5b79c2203c19a37c64021ecffc74459d7338c41e
--- /dev/null
+++ b/Train_B_Book/train_1.bpo
@@ -0,0 +1,718 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTET" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEU" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEV" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEW" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEX" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEY" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEZ" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="ROUTE[" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+        <org.eventb.core.poPredicate name="ROUTE\" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poPredicate name="ROUTE]" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poPredicate name="ROUTE^" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poPredicate name="ROUTE_" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poPredicate name="ROUTE`" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poPredicate name="rsrtbm" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I"/>
+        <org.eventb.core.poPredicate name="rsrtbn" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I"/>
+        <org.eventb.core.poPredicate name="rsrtbo" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I"/>
+        <org.eventb.core.poPredicate name="rsrtbp" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I"/>
+        <org.eventb.core.poPredicate name="rsrtbq" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poPredicate name="rsrtbr" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtbs" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtbt" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="inv5/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Invariant" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx="/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∀r⦂ROUTES·r∈ROUTES⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx="/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="inv6/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Invariant" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx&gt;"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx&gt;"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="inv8/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Invariant" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx@"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀b⦂BLOCKS·b∈LBT⇒b∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES∧rsrtbl(b)∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧(b∈ran(nxt(rsrtbl(b)))⇒b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈BLOCKS ⇸ BLOCKS)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx@"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="thm1/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Theorem" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctxA"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒b∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES∧rsrtbl(b)∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈dom(nxt(rsrtbl(b)))∧nxt(rsrtbl(b))∈BLOCKS ⇸ BLOCKS∧TRK∈BLOCKS ⇸ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctxA"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="thm1/THM" org.eventb.core.accurate="true" org.eventb.core.poDesc="Theorem" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctxA"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctxA"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="thm2/THM" org.eventb.core.accurate="true" org.eventb.core.poDesc="Theorem" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctxB"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctxB"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="thm3/THM" org.eventb.core.accurate="true" org.eventb.core.poDesc="Theorem" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctxC"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctxC"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="INITIALISATION/inv1/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxE"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="(∅ ⦂ ℙ(BLOCKS×BLOCKS))∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#INITIALISATION\/inv1\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=|org.eventb.core.poPredicate#PRD0"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="INITIALISATION/inv2/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxE"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="(∅ ⦂ ℙ(ROUTES))⊆(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#INITIALISATION\/inv2\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=|org.eventb.core.poPredicate#PRD1"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="INITIALISATION/inv3/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxE"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="(∅ ⦂ ℙ(BLOCKS×ROUTES))[∅ ⦂ ℙ(BLOCKS)]⊆(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#INITIALISATION\/inv3\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=|org.eventb.core.poPredicate#PRD2"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="INITIALISATION/inv4/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxE"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈(∅ ⦂ ℙ(ROUTES)) ∖ (∅ ⦂ ℙ(ROUTES))⇒rtbl ▷ {r}=(∅ ⦂ ℙ(BLOCKS×ROUTES)) ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#INITIALISATION\/inv4\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=|org.eventb.core.poPredicate#PRD3"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="INITIALISATION/inv5/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxE"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈(∅ ⦂ ℙ(BLOCKS×BLOCKS))⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#INITIALISATION\/inv5\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx&gt;|org.eventb.core.poPredicate#PRD4"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="INITIALISATION/inv6/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxE"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈(∅ ⦂ ℙ(ROUTES))⇒(∅ ⦂ ℙ(BLOCKS×ROUTES))∼[{r}] ◁ nxt(r)=(∅ ⦂ ℙ(BLOCKS×ROUTES))∼[{r}] ◁ (∅ ⦂ ℙ(BLOCKS×BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#INITIALISATION\/inv6\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx@|org.eventb.core.poPredicate#PRD5"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="INITIALISATION/inv7/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxE"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="(∅ ⦂ ℙ(BLOCKS))⊆(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#INITIALISATION\/inv7\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx@|org.eventb.core.poPredicate#PRD6"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="INITIALISATION/inv8/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxE"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈(∅ ⦂ ℙ(BLOCKS))∧b∈ran(nxt((∅ ⦂ ℙ(BLOCKS×ROUTES))(b)))∧a=(nxt((∅ ⦂ ℙ(BLOCKS×ROUTES))(b)))∼(b)∧a∈dom(∅ ⦂ ℙ(BLOCKS×ROUTES))⇒(∅ ⦂ ℙ(BLOCKS×ROUTES))(a)≠(∅ ⦂ ℙ(BLOCKS×ROUTES))(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#INITIALISATION\/inv8\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctxA|org.eventb.core.poPredicate#PRD7"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxE" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="TRK'" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxE" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxE" org.eventb.core.poStamp="0"/>
+    <org.eventb.core.poSequent name="route_reservation/inv2/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxF"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="frm⊆resrt∪{r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#route_reservation\/inv2\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=|org.eventb.core.poPredicate#PRD1"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="route_reservation/inv3/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxF"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="(rsrtbl∪(rtbl ▷ {r}))[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#route_reservation\/inv3\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=|org.eventb.core.poPredicate#PRD2"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="route_reservation/inv4/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxF"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈(resrt∪{r}) ∖ frm⇒rtbl ▷ {r0}=(rsrtbl∪(rtbl ▷ {r})) ▷ {r0}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#route_reservation\/inv4\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=|org.eventb.core.poPredicate#PRD3"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="route_reservation/inv6/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxF"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈frm⇒(rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ◁ nxt(r0)=(rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#route_reservation\/inv6\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx@|org.eventb.core.poPredicate#PRD5"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="route_reservation/inv8/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxF"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt((rsrtbl∪(rtbl ▷ {r}))(b)))∧a=(nxt((rsrtbl∪(rtbl ▷ {r}))(b)))∼(b)∧a∈dom(rsrtbl∪(rtbl ▷ {r}))⇒(rsrtbl∪(rtbl ▷ {r}))(a)≠(rsrtbl∪(rtbl ▷ {r}))(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#route_reservation\/inv8\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctxA|org.eventb.core.poPredicate#PRD7"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxF" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxF" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxF" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="route_freeing/inv2/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxG"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="frm ∖ {r}⊆resrt ∖ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#route_freeing\/inv2\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=|org.eventb.core.poPredicate#PRD1"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="route_freeing/inv3/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxG"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="rsrtbl[OCC]⊆frm ∖ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#route_freeing\/inv3\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=|org.eventb.core.poPredicate#PRD2"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="route_freeing/inv4/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxG"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈(resrt ∖ {r}) ∖ (frm ∖ {r})⇒rtbl ▷ {r0}=rsrtbl ▷ {r0}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#route_freeing\/inv4\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=|org.eventb.core.poPredicate#PRD3"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="route_freeing/inv6/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxG"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈frm ∖ {r}⇒rsrtbl∼[{r0}] ◁ nxt(r0)=rsrtbl∼[{r0}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#route_freeing\/inv6\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx@|org.eventb.core.poPredicate#PRD5"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxG" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxG" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxG" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/grd2/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Guard" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxH("/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStModPEeOSfLkA9HaR6w"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStModPEeOSfLkA9HaR6w"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxH("/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/grd3/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Guard" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxH)"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧fst(r)∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdTUQIdPEeOSfLkA9HaR6w"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdTUQIdPEeOSfLkA9HaR6w"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxH)"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/inv3/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxH"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="rsrtbl[OCC∪{fst(r)}]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#FRONT_MOVE_1\/inv3\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=|org.eventb.core.poPredicate#PRD2"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/inv7/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxH"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="LBT∪{fst(r)}⊆OCC∪{fst(r)}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#FRONT_MOVE_1\/inv7\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx@|org.eventb.core.poPredicate#PRD6"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/inv8/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxH"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∪{fst(r)}∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#FRONT_MOVE_1\/inv8\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctxA|org.eventb.core.poPredicate#PRD7"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/grd1/GRD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Guard strengthening (split)" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxH"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="r∈resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#FRONT_MOVE_1\/grd1\/GRD|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/act2/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of action" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxH"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxH"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxH" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTHYPtrain_ctxH(" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxH" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStMYdPEeOSfLkA9HaR6w"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTHYPtrain_ctxH)" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxH(" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="fst(r)∈resbl ∖ OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStModPEeOSfLkA9HaR6w"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxH" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxH)" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="rsrtbl(fst(r))=r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdTUQIdPEeOSfLkA9HaR6w"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="FRONT_MOVE_2/grd3/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Guard" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxI)"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="b∈dom(TRK)∧TRK∈BLOCKS ⇸ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxI)"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_2/c/WWD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of witness" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxI"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="b∈dom(TRK)∧TRK∈BLOCKS ⇸ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.witness#internal_wit1"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.witness#internal_wit1"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#FRONT_MOVE_2\/c\/WWD|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_2/inv3/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxI"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="rsrtbl[OCC∪{TRK(b)}]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#FRONT_MOVE_2\/inv3\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=|org.eventb.core.poPredicate#PRD2"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_2/inv7/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxI"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="LBT⊆OCC∪{TRK(b)}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#FRONT_MOVE_2\/inv7\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx@|org.eventb.core.poPredicate#PRD6"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_2/grd2/GRD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Guard strengthening (split)" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxI"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#FRONT_MOVE_2\/grd2\/GRD|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_2/grd3/GRD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Guard strengthening (split)" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxI"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="b ↦ TRK(b)∈nxt(rsrtbl(b))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#FRONT_MOVE_2\/grd3\/GRD|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_2/act1/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of action" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxI"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="b∈dom(TRK)∧TRK∈BLOCKS ⇸ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxI"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_2/act1/SIM" org.eventb.core.accurate="true" org.eventb.core.poDesc="Action simulation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxI"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="OCC∪{TRK(b)}=OCC∪{TRK(b)}" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element4|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#FRONT_MOVE_2\/act1\/SIM|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxI" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="c" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTHYPtrain_ctxI)" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxI" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxI" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxI)" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="BACK_MOVE_1/n/WWD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of witness" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxJ"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="b∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES∧rsrtbl(b)∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.witness#internal_wit1"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.witness#internal_wit1"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#BACK_MOVE_1\/n\/WWD|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_1/inv3/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxJ"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="({b} ⩤ rsrtbl)[OCC ∖ {b}]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#BACK_MOVE_1\/inv3\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=|org.eventb.core.poPredicate#PRD2"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_1/inv4/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxJ"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}={b} ⩤ rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#BACK_MOVE_1\/inv4\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=|org.eventb.core.poPredicate#PRD3"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_1/inv6/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxJ"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒({b} ⩤ rsrtbl)∼[{r}] ◁ nxt(r)=({b} ⩤ rsrtbl)∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#BACK_MOVE_1\/inv6\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx@|org.eventb.core.poPredicate#PRD5"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_1/inv7/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxJ"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="LBT ∖ {b}⊆OCC ∖ {b}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#BACK_MOVE_1\/inv7\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx@|org.eventb.core.poPredicate#PRD6"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_1/inv8/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxJ"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀a⦂BLOCKS,b0⦂BLOCKS·b0∈LBT ∖ {b}∧b0∈ran(nxt(({b} ⩤ rsrtbl)(b0)))∧a=(nxt(({b} ⩤ rsrtbl)(b0)))∼(b0)∧a∈dom({b} ⩤ rsrtbl)⇒({b} ⩤ rsrtbl)(a)≠({b} ⩤ rsrtbl)(b0)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#BACK_MOVE_1\/inv8\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctxA|org.eventb.core.poPredicate#PRD7"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_1/grd1/GRD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Guard strengthening (split)" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxJ"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#BACK_MOVE_1\/grd1\/GRD|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_1/grd2/GRD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Guard strengthening (split)" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxJ"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="nxt(rsrtbl(b))=nxt(rsrtbl(b))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#BACK_MOVE_1\/grd2\/GRD|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_1/grd3/GRD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Guard strengthening (split)" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxJ"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))⇒nxt(rsrtbl(b))(b)∈OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#BACK_MOVE_1\/grd3\/GRD|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_1/grd4/GRD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Guard strengthening (split)" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxJ"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)⇒rsrtbl((nxt(rsrtbl(b)))∼(b))≠rsrtbl(b)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element4"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element4"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#BACK_MOVE_1\/grd4\/GRD|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxJ" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="n" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxJ" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxJ" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∉dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="BACK_MOVE_2/grd3/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Guard" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxK)"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="b∈dom(TRK)∧TRK∈BLOCKS ⇸ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxK)"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_2/n/WWD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of witness" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxK"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="b∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES∧rsrtbl(b)∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.witness#internal_wit1"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.witness#internal_wit1"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#BACK_MOVE_2\/n\/WWD|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_2/inv3/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxK"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="({b} ⩤ rsrtbl)[OCC ∖ {b}]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#BACK_MOVE_2\/inv3\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=|org.eventb.core.poPredicate#PRD2"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_2/inv4/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxK"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}={b} ⩤ rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#BACK_MOVE_2\/inv4\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=|org.eventb.core.poPredicate#PRD3"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_2/inv6/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxK"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒({b} ⩤ rsrtbl)∼[{r}] ◁ nxt(r)=({b} ⩤ rsrtbl)∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#BACK_MOVE_2\/inv6\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx@|org.eventb.core.poPredicate#PRD5"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_2/inv7/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxK"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="(LBT ∖ {b})∪{TRK(b)}⊆OCC ∖ {b}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#BACK_MOVE_2\/inv7\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx@|org.eventb.core.poPredicate#PRD6"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_2/inv8/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxK"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀a⦂BLOCKS,b0⦂BLOCKS·b0∈(LBT ∖ {b})∪{TRK(b)}∧b0∈ran(nxt(({b} ⩤ rsrtbl)(b0)))∧a=(nxt(({b} ⩤ rsrtbl)(b0)))∼(b0)∧a∈dom({b} ⩤ rsrtbl)⇒({b} ⩤ rsrtbl)(a)≠({b} ⩤ rsrtbl)(b0)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#BACK_MOVE_2\/inv8\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctxA|org.eventb.core.poPredicate#PRD7"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_2/grd1/GRD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Guard strengthening (split)" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxK"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#BACK_MOVE_2\/grd1\/GRD|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_2/grd2/GRD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Guard strengthening (split)" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxK"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="nxt(rsrtbl(b))=nxt(rsrtbl(b))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#BACK_MOVE_2\/grd2\/GRD|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_2/grd3/GRD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Guard strengthening (split)" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxK"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))⇒nxt(rsrtbl(b))(b)∈OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#BACK_MOVE_2\/grd3\/GRD|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_2/grd4/GRD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Guard strengthening (split)" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxK"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)⇒rsrtbl((nxt(rsrtbl(b)))∼(b))≠rsrtbl(b)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element4"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element4"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#BACK_MOVE_2\/grd4\/GRD|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_2/act4/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of action" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxK"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="b∈dom(TRK)∧TRK∈BLOCKS ⇸ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxK"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxK" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="n" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTHYPtrain_ctxK)" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxK" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxK" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxK)" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="TRK(b)∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="point_positionning/inv1/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxL"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="(dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r)∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#point_positionning\/inv1\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=|org.eventb.core.poPredicate#PRD0"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="point_positionning/inv5/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxL"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈(dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r)⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#point_positionning\/inv5\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx&gt;|org.eventb.core.poPredicate#PRD4"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="point_positionning/inv6/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxL"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈frm⇒rsrtbl∼[{r0}] ◁ nxt(r0)=rsrtbl∼[{r0}] ◁ ((dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#point_positionning\/inv6\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx@|org.eventb.core.poPredicate#PRD5"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="point_positionning/act1/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of action" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxL"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxL"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxL" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="TRK'" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxL" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxL" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="route_formation/grd2/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Guard" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxM'"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#)"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#)"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxM'"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="route_formation/inv2/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxM"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="frm∪{r}⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#route_formation\/inv2\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=|org.eventb.core.poPredicate#PRD1"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="route_formation/inv3/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxM"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="rsrtbl[OCC]⊆frm∪{r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#route_formation\/inv3\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=|org.eventb.core.poPredicate#PRD2"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="route_formation/inv4/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxM"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈resrt ∖ (frm∪{r})⇒rtbl ▷ {r0}=rsrtbl ▷ {r0}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#route_formation\/inv4\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=|org.eventb.core.poPredicate#PRD3"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="route_formation/inv6/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxM"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈frm∪{r}⇒rsrtbl∼[{r0}] ◁ nxt(r0)=rsrtbl∼[{r0}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poSelHint name="SEQHYT" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poSequent#route_formation\/inv6\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx@|org.eventb.core.poPredicate#PRD5"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxM" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTHYPtrain_ctxM'" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxM" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#("/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxM" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxM'" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="HYPtrain_ctx=" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="frm⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="rsrtbl[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="HYPtrain_ctx&gt;" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx=" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="HYPtrain_ctx@" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx&gt;" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD5" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poPredicate name="PRD6" org.eventb.core.predicate="LBT⊆OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="HYPtrain_ctxA" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctx@" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD7" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="HYPtrain_ctxB" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctxA" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD8" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="HYPtrain_ctxC" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctxB" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD9" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_1.bpo|org.eventb.core.poFile#train_1|org.eventb.core.poPredicateSet#HYPtrain_ctxC" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD10" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L"/>
+    </org.eventb.core.poPredicateSet>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_1.bpr b/Train_B_Book/train_1.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..26ecb31b68932216efbaddf27bb4f72f5aa96b60
--- /dev/null
+++ b/Train_B_Book/train_1.bpr
@@ -0,0 +1,21485 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.prFile version="1">
+    <org.eventb.core.prProof name="FRONT_MOVE_1/inv3/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p4"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p9"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
+                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
+                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p14"/>
+                                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p15"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
+                                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
+                                <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p18"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p21"/>
+                                <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p20"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p23"/>
+                                <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p24"/>
+                                <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p1"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p25"/>
+                                <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p3"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p26"/>
+                                <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p5"/>
+                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p27"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p28"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p13"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p29"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p17"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p30"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p19"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p31"/>
+                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p21"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p32"/>
+                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p23"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p33"/>
+                                        <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p24"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p34"/>
+                                        <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p25"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p35"/>
+                                        <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p26"/>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl∈resbl → resrt">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewrites:4"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_reservation/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21" org.eventb.core.prSets="BLOCKS,ROUTES" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p23"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p22"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p24"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p25"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p27"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p26"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p28"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p29"/>
+                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30">
+                        <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p31">
+                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p33"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p35"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p34"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p36"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p15"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p38"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p39"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p19"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p40"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p21"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p41"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p5"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p43"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p42"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p44"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p23"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p45"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p24"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p46"/>
+                                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p25"/>
+                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p47"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p35"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p48"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p36"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p49"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p39"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p50"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p40"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p51"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p41"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p43"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p44"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p46"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p56" org.eventb.core.prInfHyps="p57"/>
+                                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p56"/>
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'">
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p58"/>
+                                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p57"/>
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                                                    <org.eventb.core.prAnte name="'">
+                                                                        <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p6,p13,p14,p7,p8,p10,p17,p4,p20,p9,p18,p28,p48,p49,p50,p51,p54,p55"/>
+                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p3,p11,p29,p31,p6,p13,p14,p7,p8,p10,p17,p4,p20,p9,p18,p28,p48,p49,p50,p51,p54,p55">
+                                                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="r∉resrt"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="r0∈(resrt∪{r}) ∖ frm">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬r∈resrt"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="r0∈(resrt∪{r}) ∖ frm⇒rtbl ▷ {r0}=(rsrtbl∪(rtbl ▷ {r})) ▷ {r0}">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="rtbl ▷ {r0}=(rsrtbl∪(rtbl ▷ {r})) ▷ {r0}">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈(resrt∪{r}) ∖ frm⇒rtbl ▷ {r0}=(rsrtbl∪(rtbl ▷ {r})) ▷ {r0}"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewrites:4"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_reservation/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22" org.eventb.core.prSets="BLOCKS,ROUTES" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p23"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p25"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p26"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p28"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p27"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p29"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p30"/>
+                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p31"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p33"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p32"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p34"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p36"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p37"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p38"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p39"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p42"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p24"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p43"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p25"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p44"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p26"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p45"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p46"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p34"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p47"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p37"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p48"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p38"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p49"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p39"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p50"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p41"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p51"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p42"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p43"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p93"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p95"/>
+                                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p94"/>
+                                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'">
+                                                                <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p6,p13,p14,p7,p8,p10,p17,p4,p3,p9,p22,p18,p29,p46,p47,p48,p49,p52,p53"/>
+                                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p20,p11,p30,p6,p13,p14,p7,p8,p10,p17,p4,p3,p9,p22,p18,p29,p46,p47,p48,p49,p52,p53">
+                                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="r∉resrt">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(rsrtbl∪(rtbl ▷ {r}))[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="r∉resrt"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="lst∼⊆rtbl">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="rtbl∈B ↔ R">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="ran(rtbl)=R">
+            <org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂R,s⦂R·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="OCC⊆resbl">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂R·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀b⦂B·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="rsrtbl⊆rtbl">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="dom(rtbl)=B">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈resbl⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="resrt⊆R">
+            <org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂R·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}">
+            <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="frm⊆resrt">
+            <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="rsrtbl∈resbl → resrt">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀r⦂R·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+            <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀r⦂R·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀r⦂R·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="fst∼⊆rtbl">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂R,s⦂R·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬r∈resrt"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="LBT⊆OCC">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="resbl⊆B">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂R·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂R·r∈R⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂R·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewrites:4"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="thm3/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
+                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
+                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
+                <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
+                <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
+                <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16"/>
+                        <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p22"/>
+                        <org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="REWRITE7" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p26"/>
+                        <org.eventb.core.prHypAction name="REWRITE8" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p27"/>
+                        <org.eventb.core.prHypAction name="REWRITE9" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p28"/>
+                        <org.eventb.core.prHypAction name="REWRITE10" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p29"/>
+                        <org.eventb.core.prHypAction name="REWRITE11" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p30"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p31"/>
+                                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p26" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p35"/>
+                                <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p27" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p36"/>
+                                <org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p28" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p37"/>
+                                <org.eventb.core.prHypAction name="REWRITE7" org.eventb.core.prHidden="p29" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p38"/>
+                                <org.eventb.core.prHypAction name="REWRITE8" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p39"/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(fst)∩ran(TRK)⊆ran(lst)"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩rsrtbl∼[{r}]⊆OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩rsrtbl∼[{r}]⊆OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩rsrtbl∼[{r}]⊆OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="ran(lst)∩dom(TRK)⊆ran(fst)"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_1/grd3/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29" org.eventb.core.prSets="BLOCKS,ROUTES" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p31"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p33"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p32"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p35"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p34"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p36"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p37"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p38">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto ImpE" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40,p41" org.eventb.core.prInfHyps="p40,p42,p43,p44,p45,p46"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p47"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p48"/>
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ⊆ in OCC⊆resbl" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p49"/>
+                                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p47"/>
+                                                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p49"/>
+                                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'">
+                                                                <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p50"/>
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
+                                                                    <org.eventb.core.prAnte name="'">
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38,p25" org.eventb.core.prInfHyps="p51"/>
+                                                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
+                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                                                            <org.eventb.core.prAnte name="'">
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p52"/>
+                                                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p51"/>
+                                                                                <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p53"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p54"/>
+                                                                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p55"/>
+                                                                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p14"/>
+                                                                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p56"/>
+                                                                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p57"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p58"/>
+                                                                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p20"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p59"/>
+                                                                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p29"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p60"/>
+                                                                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p24"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p61"/>
+                                                                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p62"/>
+                                                                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p31"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p63"/>
+                                                                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p33"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p64"/>
+                                                                                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p35"/>
+                                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                                                                            <org.eventb.core.prAnte name="'">
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p65"/>
+                                                                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p54"/>
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p55" org.eventb.core.prInfHyps="p66"/>
+                                                                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p55"/>
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p67"/>
+                                                                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p58"/>
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p68"/>
+                                                                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p59"/>
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p69"/>
+                                                                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p60"/>
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p70"/>
+                                                                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p61"/>
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p71"/>
+                                                                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p62"/>
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p72"/>
+                                                                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p63"/>
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p73"/>
+                                                                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p64"/>
+                                                                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                                        <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p4,p18,p22,p11,p9,p26,p16,p17,p21,p1,p10,p23,p19,p6,p27,p28,p12,p15,p2,p36,p65,p66,p67,p68,p69,p70"/>
+                                                                                                        <org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p5,p37,p38,p52,p4,p18,p22,p11,p9,p26,p16,p17,p21,p1,p10,p23,p19,p6,p27,p28,p12,p15,p2,p36,p65,p66,p67,p68,p69,p70">
+                                                                                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+                                                                                                        </org.eventb.core.prRule>
+                                                                                                    </org.eventb.core.prAnte>
+                                                                                                </org.eventb.core.prRule>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="rsrtbl(b)∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="rsrtbl(b)∈dom(nxt)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="OCC⊆resbl">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom(nxt(rsrtbl(b)))∧nxt(rsrtbl(b))∈B ⇸ B">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))⇒nxt(rsrtbl(b))(b)∈OCC"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="b∈dom(rsrtbl)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀x⦂B·x∈OCC⇒x∈resbl">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="b∈LBT"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="b∉dom(TRK)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="rsrtbl∈B ⇸ R">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="⊤⇒nxt(rsrtbl(b))∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="nxt∈R ⇸ ℙ(B × B)">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="nxt(rsrtbl(b))∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="nxt(rsrtbl(b))(b)∈OCC"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="rsrtbl[OCC]⊆frm">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="LBT⊆OCC">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))⇒nxt(rsrtbl(b))∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="nxt(rsrtbl(b))∈B ⇸ B">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewrites:4"/>
+        <org.eventb.core.prReas name="r8" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.ri"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoImpE"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_2/inv7/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16" org.eventb.core.prSets="BLOCKS,ROUTES" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p23"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p26"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p28"/>
+                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p27"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p30"/>
+                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p29"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p31"/>
+                                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p32"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p13"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p35"/>
+                                <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p34"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p36"/>
+                                <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p1"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p37"/>
+                                <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p2"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p38"/>
+                                <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p18"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p39"/>
+                                <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p20"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p40"/>
+                                <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p41"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p28"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p42"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p30"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p43"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p33"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p44"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p35"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p45"/>
+                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p36"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p46"/>
+                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p37"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p47"/>
+                                        <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p38"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p48"/>
+                                        <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p39"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p49"/>
+                                        <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p40"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50">
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p10,p11,p15,p6,p12,p4,p7,p14,p23,p43,p45,p46"/>
+                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p16,p3,p5,p9,p10,p11,p15,p6,p12,p4,p7,p14,p23,p43,p45,p46">
+                                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                            <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p51"/>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="LBT ∖ {b}⊆OCC ∖ {b}"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="LBT ∖ {b}⊆OCC ∖ {b}∧{TRK(b)}⊆OCC ∖ {b}"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="TRK(b)∈OCC"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="TRK∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="b∈LBT"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="LBT ∖ {b}⊆OCC ∖ {b}∧TRK(b)∈OCC ∖ {b}"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(LBT ∖ {b})∪{TRK(b)}⊆OCC ∖ {b}"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="TRK(b)∈OCC ∖ {b}"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewrites:4"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_1/grd4/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28" org.eventb.core.prSets="BLOCKS,ROUTES" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p30"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p29"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p32"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p31"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p34"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p33"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p35"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p36"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p38,p39">
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto ImpE" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41,p42" org.eventb.core.prInfHyps="p43,p44,p45,p46,p47,p48"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p49,p50,p42" org.eventb.core.prInfHyps="p46,p45,p48,p44,p43,p47,p50"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p49"/>
+                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38,p16" org.eventb.core.prInfHyps="p51"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
+                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p38,p52"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p51"/>
+                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p53"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p54"/>
+                                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p55"/>
+                                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p14"/>
+                                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p56"/>
+                                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p57"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p58"/>
+                                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p20"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p59"/>
+                                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p28"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p60"/>
+                                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p24"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p61"/>
+                                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p62"/>
+                                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p30"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p63"/>
+                                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p32"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p64"/>
+                                                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p34"/>
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'">
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p65"/>
+                                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p54"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p55" org.eventb.core.prInfHyps="p66"/>
+                                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p55"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p67"/>
+                                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p58"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p68"/>
+                                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p59"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p69"/>
+                                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p60"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p70"/>
+                                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p61"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p71"/>
+                                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p62"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p72"/>
+                                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p63"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p73"/>
+                                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p64"/>
+                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                                                    <org.eventb.core.prAnte name="'">
+                                                                        <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p4,p18,p22,p11,p9,p25,p17,p21,p1,p10,p23,p19,p6,p26,p27,p12,p15,p2,p35,p65,p66,p67,p68,p69,p70"/>
+                                                                        <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p5,p36,p38,p39,p52,p4,p18,p22,p11,p9,p25,p17,p21,p1,p10,p23,p19,p6,p26,p27,p12,p15,p2,p35,p65,p66,p67,p68,p69,p70">
+                                                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="⊤⇒b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="rsrtbl(b)∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="rsrtbl(b)∈dom(nxt)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))⇒b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬rsrtbl((nxt(rsrtbl(b)))∼(b))=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="b∈dom((nxt(rsrtbl(b)))∼)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="b∈dom(rsrtbl)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="b∈LBT"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="b∉dom(TRK)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="(nxt(rsrtbl(b)))∼∈B ⇸ B">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="rsrtbl∈B ⇸ R">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)⇒¬rsrtbl((nxt(rsrtbl(b)))∼(b))=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="nxt∈R ⇸ ℙ(B × B)">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B∧(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="(nxt(rsrtbl(b)))∼∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)⇒rsrtbl((nxt(rsrtbl(b)))∼(b))≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewrites:4"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoImpE"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_2/grd4/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="B,R">
+        <org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p45">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7,p8,p9,p10"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p14"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p16"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18,p7,p8,p9,p19,p10"/>
+                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p17"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p21"/>
+                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p20"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p23"/>
+                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p22"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p25"/>
+                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p24"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p27"/>
+                <org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p26"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF20" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p29"/>
+                <org.eventb.core.prHypAction name="HIDE21" org.eventb.core.prHyps="p28"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF22" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p18,p19"/>
+                <org.eventb.core.prHypAction name="HIDE23" org.eventb.core.prHyps="p30"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF24" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p32"/>
+                <org.eventb.core.prHypAction name="HIDE25" org.eventb.core.prHyps="p31"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF26" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p34"/>
+                <org.eventb.core.prHypAction name="HIDE27" org.eventb.core.prHyps="p33"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF28" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p36"/>
+                <org.eventb.core.prHypAction name="HIDE29" org.eventb.core.prHyps="p35"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF30" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p38"/>
+                <org.eventb.core.prHypAction name="HIDE31" org.eventb.core.prHyps="p37"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF32" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p39"/>
+                <org.eventb.core.prHypAction name="HIDE33" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF34" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41,p42"/>
+                <org.eventb.core.prHypAction name="HIDE35" org.eventb.core.prHyps="p40"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF36" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p44"/>
+                <org.eventb.core.prHypAction name="HIDE37" org.eventb.core.prHyps="p43"/>
+                <org.eventb.core.prRule name="org.eventb.core.seqprover.impI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="p46,p47">
+                        <org.eventb.core.prRule name="org.eventb.core.seqprover.autoImpE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto ImpE" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="0">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p47,p2" org.eventb.core.prInfHyps="p49,p18,p50,p51,p52,p53"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p44,p46,p47" org.eventb.core.prInfHyps="p49,p46,p51,p53,p18,p50,p52"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prRule name="org.eventb.core.seqprover.allD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst (nxt(rsrtbl(b)))∼(b),b)" org.eventb.core.prHyps="p1">
+                                    <org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p54">
+                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p55">
+                                                <org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p49">
+                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p49"/>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p53">
+                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p53"/>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="2" org.eventb.core.prGoal="p51">
+                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p51"/>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="3" org.eventb.core.prGoal="p18">
+                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p18"/>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="4" org.eventb.core.prGoal="p52">
+                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p52"/>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="5" org.eventb.core.prGoal="p50">
+                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p50"/>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p55,p56">
+                                        <org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p1"/>
+                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="0">
+                                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p55"/>
+                                                <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p49,p53,p51,p18,p52,p50"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p56" org.eventb.core.prInfHyps="p57"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p56"/>
+                                                <org.eventb.core.prRule name="org.eventb.core.seqprover.autoImpE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto ImpE" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="0">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3,p47,p46,p57" org.eventb.core.prInfHyps="p48"/>
+                                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p57"/>
+                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="p48"/>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0,e1"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀a⦂B,b⦂B·(b∈LBT⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧(b∈ran(nxt(rsrtbl(b)))⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B))∧(b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒a∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R)"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="rsrtbl(b)∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂R,S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B))"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬rsrtbl((nxt(rsrtbl(b)))∼(b))=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀b⦂B·b∈LBT⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧(b∈ran(nxt(rsrtbl(b)))⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B)"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼(b)=(nxt(rsrtbl(b)))∼(b)∧(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)⇒rsrtbl((nxt(rsrtbl(b)))∼(b))≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂R,S⦂ℙ(B)·S⊆B⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂R·r∈R⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)⇒¬rsrtbl((nxt(rsrtbl(b)))∼(b))=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂R·r∈R⇒(∀S⦂ℙ(B)·S⊆B⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B))"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="b∈LBT"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B∧(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∀r⦂R·r∈dom(nxt))∧nxt∈R ⇸ ℙ(B × B)">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·r∈R∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="rsrtbl∈B ⇸ R"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)⇒rsrtbl((nxt(rsrtbl(b)))∼(b))≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒r∈dom(fst)∧fst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)∧lst∈R ⇸ B">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒r∈dom(fst)∧fst∈R ⇸ B∧s∈dom(fst)∧s∈dom(lst)∧lst∈R ⇸ B">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="⊤∧(b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B)"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="(nxt(rsrtbl(b)))∼∈B ⇸ B"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂R·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂R·r∈dom(fst)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)⇒¬rsrtbl((nxt(rsrtbl(b)))∼(b))=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒a∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(fst)∧fst∈R ⇸ B∧r∈dom(lst)∧lst∈R ⇸ B">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂R·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂R·r∈R⇒(∀S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B)))"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="lst∈R ⇸ B">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧r∈dom(lst)∧lst∈R ⇸ B∧r∈dom(fst)∧fst∈R ⇸ B">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂R·r∈dom(lst)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="nxt∈R ⇸ ℙ(B × B)"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B∧(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒r∈dom(lst)∧lst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)∧lst∈R ⇸ B">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="fst∈R ⇸ B">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒r∈dom(lst)∧lst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂R·r∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂R·r∈R⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="b∈dom((nxt(rsrtbl(b)))∼)"/>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="(nxt(rsrtbl(b)))∼(b)"/>
+        <org.eventb.core.prExpr name="e1" org.eventb.core.expression="b"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="thm2/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
+                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
+                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
+                <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
+                <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
+                        <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p18"/>
+                        <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p20"/>
+                        <org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p22"/>
+                        <org.eventb.core.prHypAction name="REWRITE7" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="REWRITE8" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p25"/>
+                        <org.eventb.core.prHypAction name="REWRITE9" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p26"/>
+                        <org.eventb.core.prHypAction name="REWRITE10" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p27"/>
+                        <org.eventb.core.prHypAction name="REWRITE11" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p28"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p29"/>
+                                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p30"/>
+                                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p31"/>
+                                <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p26" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p35"/>
+                                <org.eventb.core.prHypAction name="REWRITE7" org.eventb.core.prHidden="p27" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p36"/>
+                                <org.eventb.core.prHypAction name="REWRITE8" org.eventb.core.prHidden="p28" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p37"/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩rsrtbl∼[{r}]⊆OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩rsrtbl∼[{r}]⊆OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩rsrtbl∼[{r}]⊆OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="ran(lst)∩dom(TRK)⊆ran(fst)"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="inv8/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p26"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p27"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p22"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p28"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p31"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p6"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p32"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p33"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p34"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p35"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p36"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p25"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p37"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p23"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p38"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p39"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p26"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p40"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p27"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p41"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p28"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p42"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p43"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p32"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p44"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p45"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p36"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p46"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p37"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p47"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p38"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p48"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p39"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p49"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p40"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p50"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p41"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees b)" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51">
+                                        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p52">
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p54">
+                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p4,p11,p16,p19,p9,p12,p5,p7,p24,p14,p15,p2,p18,p1,p8,p20,p42,p43,p44,p45,p46,p47,p48,p49,p50,p52">
+                                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p55">
+                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p7"/>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p56">
+                                                        <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional image goal for rsrtbl(b)" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p7">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p57">
+                                                                <org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p16">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p58">
+                                                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="">
+                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
+                                                                                <org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p59" org.eventb.core.prHyps=""/>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                    <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p60">
+                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p16"/>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p61">
+                                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="p62">
+                                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
+                                                                        <org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="p62"/>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p64">
+                                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p4,p11,p16,p19,p9,p12,p5,p7,p24,p14,p15,p2,p18,p1,p8,p20,p42,p43,p44,p45,p46,p47,p48,p49,p50,p52,p62">
+                                                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="b∈LBT⇒b∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES∧rsrtbl(b)∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧(b∈ran(nxt(rsrtbl(b)))⇒b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼∈BLOCKS ⇸ BLOCKS)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀b⦂BLOCKS·b∈LBT⇒b∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES∧rsrtbl(b)∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧(b∈ran(nxt(rsrtbl(b)))⇒b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼∈BLOCKS ⇸ BLOCKS)"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))⇒b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼∈BLOCKS ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="rsrtbl(b)∈dom(nxt)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="b∈dom(rsrtbl)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼∈BLOCKS ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="b∈LBT">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="rsrtbl(b)∈resrt">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="rsrtbl(b)∈ROUTES">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="b∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES∧rsrtbl(b)∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧(b∈ran(nxt(rsrtbl(b)))⇒b∈ran(nxt(rsrtbl(b)))∧(nxt(rsrtbl(b)))∼∈BLOCKS ⇸ BLOCKS)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="(nxt(rsrtbl(b)))∼∈BLOCKS ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀b⦂BLOCKS·b∈LBT⇒b∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES∧rsrtbl(b)∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧(b∈ran(nxt(rsrtbl(b)))⇒b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈BLOCKS ⇸ BLOCKS)"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.funImgGoal"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/inv8/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="b,a" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p5"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p8"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p7"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a,b)" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
+                        <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+                        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p11,p12,p13,p14">
+                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p16"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p17"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p19"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p22"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p23"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p26"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p25"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p28"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p27"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p30"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p29"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p31"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p2"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p32"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p4"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p33"/>
+                                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p6"/>
+                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p34"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p35"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p20"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p36"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p24"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p37"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p26"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p38"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p28"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p39"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p30"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p40"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p31"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p41"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p32"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p42"/>
+                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p33"/>
+                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with a=(nxt(rsrtbl(b)))∼(b)" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p13">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p43"/>
+                                                        <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p14"/>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="a=(nxt(rsrtbl(b)))∼(b)">
+            <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="b∈ran(nxt(rsrtbl(b)))">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="b∈LBT∪{fst(r)}">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬rsrtbl((nxt(rsrtbl(b)))∼(b))=rsrtbl(b)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∪{fst(r)}∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="(nxt(rsrtbl(b)))∼(b)∈dom(rsrtbl)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="b∈LBT∪{fst(r)}∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="a∈dom(rsrtbl)">
+            <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∪{fst(r)}∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewrites:4"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_reservation/inv8/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="b,a" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p5"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p8"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p7"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a,b)" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
+                        <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+                        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p13,p14,p15,p16">
+                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p18"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p19"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p21"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p23"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p24"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p26"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p25"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p28"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p27"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p30"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p29"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p32"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p31"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p33"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p2"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p34"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p4"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p35"/>
+                                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p6"/>
+                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p36"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p20"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p37"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p22"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p38"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p26"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p39"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p28"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p40"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p30"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p41"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p32"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p42"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p33"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p43"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p34"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p44"/>
+                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p35"/>
+                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with a=(nxt((rsrtbl∪(rtbl ▷ {r}))(b)))∼(b)" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p15">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p46">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p45"/>
+                                                        <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p16"/>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="b∈LBT∧b∈ran(nxt((rsrtbl∪(rtbl ▷ {r}))(b)))∧a=(nxt((rsrtbl∪(rtbl ▷ {r}))(b)))∼(b)∧a∈dom(rsrtbl∪(rtbl ▷ {r}))⇒¬(rsrtbl∪(rtbl ▷ {r}))(a)=(rsrtbl∪(rtbl ▷ {r}))(b)">
+            <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="r∉resrt">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt((rsrtbl∪(rtbl ▷ {r}))(b)))∧a=(nxt((rsrtbl∪(rtbl ▷ {r}))(b)))∼(b)∧a∈dom(rsrtbl∪(rtbl ▷ {r}))⇒(rsrtbl∪(rtbl ▷ {r}))(a)≠(rsrtbl∪(rtbl ▷ {r}))(b)"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="b∈LBT">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt((rsrtbl∪(rtbl ▷ {r}))(b)))∧a=(nxt((rsrtbl∪(rtbl ▷ {r}))(b)))∼(b)∧a∈dom(rsrtbl∪(rtbl ▷ {r}))⇒¬(rsrtbl∪(rtbl ▷ {r}))(a)=(rsrtbl∪(rtbl ▷ {r}))(b)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬r∈resrt">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬(rsrtbl∪(rtbl ▷ {r}))((nxt((rsrtbl∪(rtbl ▷ {r}))(b)))∼(b))=(rsrtbl∪(rtbl ▷ {r}))(b)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬(rsrtbl∪(rtbl ▷ {r}))(a)=(rsrtbl∪(rtbl ▷ {r}))(b)">
+            <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="b∈ran(nxt((rsrtbl∪(rtbl ▷ {r}))(b)))">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="a=(nxt((rsrtbl∪(rtbl ▷ {r}))(b)))∼(b)">
+            <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="(nxt((rsrtbl∪(rtbl ▷ {r}))(b)))∼(b)∈dom(rsrtbl∪(rtbl ▷ {r}))">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="a∈dom(rsrtbl∪(rtbl ▷ {r}))">
+            <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewrites:4"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_reservation/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27" org.eventb.core.prSets="BLOCKS,ROUTES" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p29"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p28"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p30"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p23"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p31"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p32"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p33"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34">
+                        <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p35">
+                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p37"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p38"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p39"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p16"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p40"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p41"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p42"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p21"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p43"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p27"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p44"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p24"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p45"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p4"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p46"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p29"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p47"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p30"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p48"/>
+                                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p31"/>
+                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p49"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p50"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p39"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p51"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p42"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p43"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p44"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p45"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p46"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p47"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p48"/>
+                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p5,p13,p19,p14,p6,p9,p25,p17,p18,p3,p22,p1,p20,p7,p26,p32,p49,p50,p51,p52,p53,p54,p56,p57"/>
+                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p10,p11,p33,p35,p5,p13,p19,p14,p6,p9,p25,p17,p18,p3,p22,p1,p20,p7,p26,p32,p49,p50,p51,p52,p53,p54,p56,p57">
+                                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="r∉resrt"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="r0∈frm">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈frm⇒(rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ◁ nxt(r0)=(rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="r0∈frm⇒(rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ◁ nxt(r0)=(rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ◁ TRK">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="(rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ◁ nxt(r0)=(rsrtbl∪(rtbl ▷ {r}))∼[{r0}] ◁ TRK">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬r∈resrt"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewrites:4"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_1/inv8/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b0,a" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p8"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p7"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p23"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p26"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p25"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p28"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p27"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p29"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p6"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p30"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p31"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p10"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p18"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p35"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p36"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p26"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p37"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p28"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p38"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p29"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p39"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p30"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p40"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p31"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p4">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p4">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42">
+                                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p4">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43">
+                                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p4">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44">
+                                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a,b0)" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45">
+                                                                        <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+                                                                        <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+                                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="">
+                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p46,p47,p48,p49">
+                                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with a=(nxt(rsrtbl(b0)))∼(b0)" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p48">
+                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p51"/>
+                                                                                        <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p49"/>
+                                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p1,p11,p12,p46,p47,p48,p51">
+                                                                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="2.1.0.1"/>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="2.1.0.0"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="2.0.2.1.0.0.1"/>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="2.0.1.1.0.1"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="a∈dom(rsrtbl) ∖ {b}">
+            <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬rsrtbl((nxt(rsrtbl(b0)))∼(b0))=rsrtbl(b0)">
+            <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="(nxt(rsrtbl(b0)))∼(b0)∈dom(rsrtbl) ∖ {b}">
+            <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="b0∈LBT ∖ {b}∧b0∈ran(nxt(rsrtbl(b0)))∧a=(nxt(rsrtbl(b0)))∼(b0)∧a∈dom(rsrtbl) ∖ {b}⇒¬rsrtbl(a)=rsrtbl(b0)">
+            <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="b0∈LBT ∖ {b}">
+            <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬rsrtbl(a)=rsrtbl(b0)">
+            <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀a⦂BLOCKS,b0⦂BLOCKS·b0∈LBT ∖ {b}∧b0∈ran(nxt(rsrtbl(b0)))∧a=(nxt(({b} ⩤ rsrtbl)(b0)))∼(b0)∧a∈dom(rsrtbl) ∖ {b}⇒¬({b} ⩤ rsrtbl)(a)=({b} ⩤ rsrtbl)(b0)"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀a⦂BLOCKS,b0⦂BLOCKS·b0∈LBT ∖ {b}∧b0∈ran(nxt(({b} ⩤ rsrtbl)(b0)))∧a=(nxt(({b} ⩤ rsrtbl)(b0)))∼(b0)∧a∈dom(rsrtbl) ∖ {b}⇒¬({b} ⩤ rsrtbl)(a)=({b} ⩤ rsrtbl)(b0)"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="b∈LBT"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="b∉dom(TRK)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀a⦂BLOCKS,b0⦂BLOCKS·b0∈LBT ∖ {b}∧b0∈ran(nxt(rsrtbl(b0)))∧a=(nxt(rsrtbl(b0)))∼(b0)∧a∈dom(rsrtbl) ∖ {b}⇒¬rsrtbl(a)=rsrtbl(b0)"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀a⦂BLOCKS,b0⦂BLOCKS·b0∈LBT ∖ {b}∧b0∈ran(nxt(rsrtbl(b0)))∧a=(nxt(rsrtbl(b0)))∼(b0)∧a∈dom(rsrtbl) ∖ {b}⇒¬({b} ⩤ rsrtbl)(a)=({b} ⩤ rsrtbl)(b0)"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="b0∈ran(nxt(rsrtbl(b0)))">
+            <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a⦂BLOCKS,b0⦂BLOCKS·b0∈LBT ∖ {b}∧b0∈ran(nxt(({b} ⩤ rsrtbl)(b0)))∧a=(nxt(({b} ⩤ rsrtbl)(b0)))∼(b0)∧a∈dom({b} ⩤ rsrtbl)⇒({b} ⩤ rsrtbl)(a)≠({b} ⩤ rsrtbl)(b0)"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀a⦂BLOCKS,b0⦂BLOCKS·b0∈LBT ∖ {b}∧b0∈ran(nxt(rsrtbl(b0)))∧a=(nxt(rsrtbl(b0)))∼(b0)∧a∈dom(rsrtbl) ∖ {b}⇒¬rsrtbl(a)=({b} ⩤ rsrtbl)(b0)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="a=(nxt(rsrtbl(b0)))∼(b0)">
+            <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_2/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28" org.eventb.core.prSets="BLOCKS,ROUTES" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p30"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p29"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p31"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p22"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p32"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p33"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p14"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34">
+                        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p35">
+                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p37"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p39"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p38"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p40"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p15"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p41"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p42"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p43"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p19"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p44"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p28"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p45"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p23"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p46"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p47"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p30"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p48"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p31"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p49"/>
+                                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p32"/>
+                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p50"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p51"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p40"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p43"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p44"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p45"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p46"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p47"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p48"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p58"/>
+                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p49"/>
+                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p4,p12,p13,p5,p8,p24,p16,p17,p2,p20,p10,p21,p18,p7,p25,p27,p33,p51,p52,p53,p54,p55,p57,p58"/>
+                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p1,p6,p9,p26,p35,p4,p12,p13,p5,p8,p24,p16,p17,p2,p20,p10,p21,p18,p7,p25,p27,p33,p51,p52,p53,p54,p55,p57,p58">
+                                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}={b} ⩤ rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="r∈resrt ∖ frm⇒rtbl ▷ {r}={b} ⩤ rsrtbl ▷ {r}">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="rtbl ▷ {r}={b} ⩤ rsrtbl ▷ {r}">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="TRK(b)∈OCC"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="r∈resrt ∖ frm">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="TRK∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="b∈LBT"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewrites:4"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_1/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32" org.eventb.core.prSets="B,R">
+        <org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="0">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p33"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p34"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p39"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p40"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p42"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p44,p35,p37,p36,p45,p38"/>
+                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p43"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p46"/>
+                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p48"/>
+                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p47"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p49"/>
+                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p25"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p51"/>
+                <org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p50"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF20" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p52"/>
+                <org.eventb.core.prHypAction name="HIDE21" org.eventb.core.prHyps="p24"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF22" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p44,p45"/>
+                <org.eventb.core.prHypAction name="HIDE23" org.eventb.core.prHyps="p53"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF24" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p54"/>
+                <org.eventb.core.prHypAction name="HIDE25" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF26" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p55"/>
+                <org.eventb.core.prHypAction name="HIDE27" org.eventb.core.prHyps="p18"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF28" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p56"/>
+                <org.eventb.core.prHypAction name="HIDE29" org.eventb.core.prHyps="p21"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF30" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p58"/>
+                <org.eventb.core.prHypAction name="HIDE31" org.eventb.core.prHyps="p57"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF32" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p59"/>
+                <org.eventb.core.prHypAction name="HIDE33" org.eventb.core.prHyps="p28"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF34" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p61,p62"/>
+                <org.eventb.core.prHypAction name="HIDE35" org.eventb.core.prHyps="p60"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF36" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p63"/>
+                <org.eventb.core.prHypAction name="HIDE37" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prRule name="org.eventb.core.seqprover.allI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p64">
+                        <org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+                        <org.eventb.core.prRule name="org.eventb.core.seqprover.impI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p65">
+                                <org.eventb.core.prRule name="org.eventb.core.seqprover.allD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst r)" org.eventb.core.prHyps="p14">
+                                    <org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p67">
+                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.trueGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p67" org.eventb.core.prHyps=""/>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p68">
+                                        <org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p14"/>
+                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.autoImpE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto ImpE" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="0">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p65,p68" org.eventb.core.prInfHyps="p69"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p68"/>
+                                                <org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (rtbl ▷ {r}=rsrtbl ▷ {r})" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p69">
+                                                    <org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p70">
+                                                        <org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps=""/>
+                                                        <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps=""/>
+                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="0">
+                                                                <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p10"/>
+                                                                <org.eventb.core.prRule name="org.eventb.core.seqprover.cut" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (rsrtbl(b)≠r)" org.eventb.core.prHyps="">
+                                                                    <org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p71">
+                                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="">
+                                                                            <org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p72">
+                                                                                <org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                                                                    <org.eventb.core.prAnte name="0">
+                                                                                        <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p30"/>
+                                                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                                                                            <org.eventb.core.prAnte name="0">
+                                                                                                <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p9"/>
+                                                                                                <org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="p9,p10,p69,p30,p65,p63,p15">
+                                                                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+                                                                                                </org.eventb.core.prRule>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p73">
+                                                                                <org.eventb.core.prRule name="com.b4free.rodin.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="p23,p20,p27,p5,p32,p7,p19,p2,p17,p1,p30,p4,p9,p8,p12,p22,p14,p29,p10,p26,p15,p33,p39,p42,p46,p49,p52,p54,p55,p56,p59,p63,p65,p69">
+                                                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:2000"/>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="p72,p73">
+                                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="">
+                                                                            <org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p75">
+                                                                                <org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                                                                    <org.eventb.core.prAnte name="0">
+                                                                                        <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p12"/>
+                                                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.contr" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ct goal" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="">
+                                                                                            <org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="p76">
+                                                                                                <org.eventb.core.prRule name="org.eventb.core.seqprover.he" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he (rsrtbl(b)=r)" org.eventb.core.prHyps="p76">
+                                                                                                    <org.eventb.core.prAnte name="0">
+                                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p78"/>
+                                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p79"/>
+                                                                                                        <org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p65,p69"/>
+                                                                                                        <org.eventb.core.prHypAction name="SELECT3" org.eventb.core.prHyps="p79,p78"/>
+                                                                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                                                                                            <org.eventb.core.prAnte name="0">
+                                                                                                                <org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p76"/>
+                                                                                                                <org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (rsrtbl(b)=r)" org.eventb.core.prHyps="p76">
+                                                                                                                    <org.eventb.core.prAnte name="0">
+                                                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p65"/>
+                                                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p69"/>
+                                                                                                                        <org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p79,p78"/>
+                                                                                                                        <org.eventb.core.prHypAction name="SELECT3" org.eventb.core.prHyps="p65,p69"/>
+                                                                                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                                                                                                            <org.eventb.core.prAnte name="0">
+                                                                                                                                <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p22"/>
+                                                                                                                                <org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                                                                                                                    <org.eventb.core.prAnte name="0">
+                                                                                                                                        <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p9"/>
+                                                                                                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                                                                                                                            <org.eventb.core.prAnte name="0">
+                                                                                                                                                <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p76"/>
+                                                                                                                                                <org.eventb.core.prRule name="org.eventb.core.seqprover.he" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he (rsrtbl(b)=r)" org.eventb.core.prHyps="p76">
+                                                                                                                                                    <org.eventb.core.prAnte name="0">
+                                                                                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p78"/>
+                                                                                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p79"/>
+                                                                                                                                                        <org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p65,p69"/>
+                                                                                                                                                        <org.eventb.core.prHypAction name="SELECT3" org.eventb.core.prHyps="p79,p78"/>
+                                                                                                                                                        <org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="p72,p9,p79,p10,p12,p73,p22,p78,p63,p76,p15">
+                                                                                                                                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+                                                                                                                                                        </org.eventb.core.prRule>
+                                                                                                                                                    </org.eventb.core.prAnte>
+                                                                                                                                                    <org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p76"/>
+                                                                                                                                                </org.eventb.core.prRule>
+                                                                                                                                            </org.eventb.core.prAnte>
+                                                                                                                                        </org.eventb.core.prRule>
+                                                                                                                                    </org.eventb.core.prAnte>
+                                                                                                                                </org.eventb.core.prRule>
+                                                                                                                            </org.eventb.core.prAnte>
+                                                                                                                        </org.eventb.core.prRule>
+                                                                                                                    </org.eventb.core.prAnte>
+                                                                                                                    <org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p76"/>
+                                                                                                                </org.eventb.core.prRule>
+                                                                                                            </org.eventb.core.prAnte>
+                                                                                                        </org.eventb.core.prRule>
+                                                                                                    </org.eventb.core.prAnte>
+                                                                                                    <org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p76"/>
+                                                                                                </org.eventb.core.prRule>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prAnte name="2" org.eventb.core.prHyps="p72,p74,p73">
+                                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prHyps="">
+                                                                            <org.eventb.core.prAnte name="0">
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p74"/>
+                                                                                <org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p70" org.eventb.core.prHyps="p75,p72,p10,p69,p73,p65,p63,p15">
+                                                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p74"/>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p69"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(R)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(B)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(R)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀a⦂B,b⦂B·(b∈LBT⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧(b∈ran(nxt(rsrtbl(b)))⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B))∧(b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒a∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R)"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B))"/>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="rsrtbl(b)≠r">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))"/>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="rtbl ▷ {r}=rsrtbl ▷ {r}">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂R,S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B))"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="lst∈R → B"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬rsrtbl(b)=r">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀b⦂B·b∈LBT⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧(b∈ran(nxt(rsrtbl(b)))⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B)"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂R,S⦂ℙ(B)·S⊆B⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂R·r∈R⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="b∈LBT"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂R·r∈R⇒(∀S⦂ℙ(B)·S⊆B⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B))"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∀r⦂R·r∈dom(nxt))∧nxt∈R ⇸ ℙ(B × B)"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="resrt⊆R"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·r∈R∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="rsrtbl∈B ⇸ R"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="⊥"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂R·r∈resrt ∖ frm⇒rtbl ▷ {r}={b} ⩤ rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀b⦂B·b∈OCC∧b∈dom(TRK)⇒(nxt(rsrtbl(b)))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒r∈dom(fst)∧fst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)∧lst∈R ⇸ B"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒r∈dom(fst)∧fst∈R ⇸ B∧s∈dom(fst)∧s∈dom(lst)∧lst∈R ⇸ B"/>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂R·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="fst∈R → B"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="r∈resrt ∖ frm⇒rtbl ▷ {r}={b} ⩤ rsrtbl ▷ {r}">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="rtbl ▷ {rsrtbl(b)}=rsrtbl ▷ {rsrtbl(b)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="resbl⊆B"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂R·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂R·r∈dom(fst)"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒a∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(fst)∧fst∈R ⇸ B∧r∈dom(lst)∧lst∈R ⇸ B"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="nxt∈R → (B ⤔ B)"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂R·r∈R⇒(∀S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B)))"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂R·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="TRK∈B ⤔ B"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="lst∈R ⇸ B"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧r∈dom(lst)∧lst∈R ⇸ B∧r∈dom(fst)∧fst∈R ⇸ B"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="b∉dom(TRK)"/>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="rsrtbl(b)∈resrt ∖ frm"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂R·r∈dom(lst)"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="nxt∈R ⇸ ℙ(B × B)"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂R·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="rsrtbl ▷ {r}={b} ⩤ rsrtbl ▷ {r}">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="dom(rtbl)=B"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒r∈dom(lst)∧lst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)∧lst∈R ⇸ B"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="fst∈R ⇸ B"/>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rsrtbl(b)=r">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="rtbl∈B ↔ R"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))"/>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="ran(rtbl)=R"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒r∈dom(lst)∧lst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂R·r∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="rtbl ▷ {r}={b} ⩤ rsrtbl ▷ {r}">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="r∈resrt ∖ frm">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂R·r∈R⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="r">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+        </org.eventb.core.prExpr>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_2/inv3/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p4"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p10"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p23"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p25"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p1"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p26"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p27"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p28"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p29"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p14"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p30"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p18"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p31"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p20"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p25"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p35"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p26"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p36"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p27"/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬TRK(b)∈OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="TRK(b)∉OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewrites:4"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="thm1/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6" org.eventb.core.prSets="B,R" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="0">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p8"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10,p11,p12,p13"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p14"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p18"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p21,p10,p11,p12,p22,p13"/>
+                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p20"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
+                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p23"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p26"/>
+                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p25"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p28"/>
+                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p27"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p30"/>
+                <org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p29"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF20" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p32"/>
+                <org.eventb.core.prHypAction name="HIDE21" org.eventb.core.prHyps="p31"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF22" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p21,p22"/>
+                <org.eventb.core.prHypAction name="HIDE23" org.eventb.core.prHyps="p33"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF24" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p35"/>
+                <org.eventb.core.prHypAction name="HIDE25" org.eventb.core.prHyps="p34"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF26" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p37"/>
+                <org.eventb.core.prHypAction name="HIDE27" org.eventb.core.prHyps="p36"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF28" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p39"/>
+                <org.eventb.core.prHypAction name="HIDE29" org.eventb.core.prHyps="p38"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF30" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41"/>
+                <org.eventb.core.prHypAction name="HIDE31" org.eventb.core.prHyps="p40"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF32" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p43"/>
+                <org.eventb.core.prHypAction name="HIDE33" org.eventb.core.prHyps="p42"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF34" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p45,p46"/>
+                <org.eventb.core.prHypAction name="HIDE35" org.eventb.core.prHyps="p44"/>
+                <org.eventb.core.prRule name="org.eventb.core.seqprover.allI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees b)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p47">
+                        <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+                        <org.eventb.core.prRule name="org.eventb.core.seqprover.impI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p48,p49">
+                                <org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="0">
+                                        <org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p51,p39,p52,p43,p53,p6"/>
+                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="0">
+                                                <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p3"/>
+                                                <org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="0">
+                                                        <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p5"/>
+                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="0">
+                                                                <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1"/>
+                                                                <org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="">
+                                                                    <org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p54">
+                                                                        <org.eventb.core.prRule name="org.eventb.pp.pp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Predicate Prover" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p1,p48,p3">
+                                                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
+                                                                            <org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="2000"/>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p55">
+                                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.isFunGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p3"/>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prAnte name="2" org.eventb.core.prGoal="p56">
+                                                                        <org.eventb.core.prRule name="org.eventb.pp.pp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Predicate Prover" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p1,p48,p3,p5">
+                                                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
+                                                                            <org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="2000"/>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prAnte name="3" org.eventb.core.prGoal="p21">
+                                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.isFunGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p5"/>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prAnte name="4" org.eventb.core.prGoal="p57">
+                                                                        <org.eventb.core.prRule name="org.eventb.pp.pp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Predicate Prover" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="p1,p48,p49,p2,p3,p4">
+                                                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
+                                                                            <org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="2000"/>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prAnte name="5" org.eventb.core.prGoal="p58">
+                                                                        <org.eventb.core.prRule name="org.eventb.pp.pp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Predicate Prover" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p1,p48,p49,p2,p3,p4,p5">
+                                                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
+                                                                            <org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="2000"/>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prAnte name="6" org.eventb.core.prGoal="p49">
+                                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p49"/>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prAnte name="7" org.eventb.core.prGoal="p59">
+                                                                        <org.eventb.core.prRule name="org.eventb.core.seqprover.isFunGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p6"/>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(R)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(B)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(R)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B))"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀a⦂B,b⦂B·(b∈LBT⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧(b∈ran(nxt(rsrtbl(b)))⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B))∧(b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒a∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="b∈OCC">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="b∈dom(TRK)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="rsrtbl(b)∈dom(nxt)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂R,S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B))"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀b⦂B·b∈LBT⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧(b∈ran(nxt(rsrtbl(b)))⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂R,S⦂ℙ(B)·S⊆B⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂R·r∈R⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂R·r∈R⇒(∀S⦂ℙ(B)·S⊆B⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B))"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∀r⦂R·r∈dom(nxt))∧nxt∈R ⇸ ℙ(B × B)"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·r∈R∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="rsrtbl∈B ⇸ R"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒r∈dom(fst)∧fst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)∧lst∈R ⇸ B">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒r∈dom(fst)∧fst∈R ⇸ B∧s∈dom(fst)∧s∈dom(lst)∧lst∈R ⇸ B">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂R·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom(nxt(rsrtbl(b)))∧nxt(rsrtbl(b))∈B ⇸ B∧b∈dom(TRK)∧TRK∈B ⇸ B">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂R·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="TRK∈B ⇸ B"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂R·r∈dom(fst)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒a∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧b∈dom(rsrtbl)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="nxt(rsrtbl(b))∈B ⇸ B">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(fst)∧fst∈R ⇸ B∧r∈dom(lst)∧lst∈R ⇸ B">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂R·r∈R⇒(∀S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B)))"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="nxt∈R → (B ⤔ B)"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂R·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="TRK∈B ⤔ B"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="lst∈R ⇸ B">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧r∈dom(lst)∧lst∈R ⇸ B∧r∈dom(fst)∧fst∈R ⇸ B">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="LBT⊆OCC">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂R·r∈dom(lst)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="nxt∈R ⇸ ℙ(B × B)"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂R·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="b∈OCC∧b∈dom(TRK)⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom(nxt(rsrtbl(b)))∧nxt(rsrtbl(b))∈B ⇸ B∧b∈dom(TRK)∧TRK∈B ⇸ B">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒r∈dom(lst)∧lst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)∧lst∈R ⇸ B">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="fst∈R ⇸ B">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="b∈dom(rsrtbl)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒r∈dom(lst)∧lst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂R·r∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂R·r∈R⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀b⦂B·b∈OCC∧b∈dom(TRK)⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom(nxt(rsrtbl(b)))∧nxt(rsrtbl(b))∈B ⇸ B∧b∈dom(TRK)∧TRK∈B ⇸ B"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="thm1/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="b" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p5"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p8"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p7"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees b)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
+                        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p10,p11">
+                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p13"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p14"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p16"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p18"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p19"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p21"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p20"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p23"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p22"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p25"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p24"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p27"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p26"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p28"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p2"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p29"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p4"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p30"/>
+                                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p6"/>
+                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p31"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p32"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p33"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p34"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p23"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p35"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p25"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p36"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p27"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p37"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p28"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p38"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p29"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p39"/>
+                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p30"/>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="b∈OCC">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="b∈dom(TRK)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="nxt(rsrtbl(b))(b)=TRK(b)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewrites:4"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="point_positionning/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="BLOCKS,ROUTES" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p25"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p27"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p26"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p29"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p28"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p30"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p14"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p31"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p32"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p33"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p34"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p35"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p13"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p36"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p37"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p38"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p19"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p39"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p23"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p40"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p4"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p41"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p5"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p42"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p25"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p43"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p27"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p44"/>
+                                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p29"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p45"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p34"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p46"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p35"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p47"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p38"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p48"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p39"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p49"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p40"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p50"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p41"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p51"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p42"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p43"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p44"/>
+                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p6,p16,p22,p11,p9,p3,p21,p2,p10,p17,p7,p12,p20,p1,p30,p45,p46,p47,p48,p49,p50"/>
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p15,p18,p6,p16,p22,p11,p9,p3,p21,p2,p10,p17,p7,p12,p20,p1,p30,p45,p46,p47,p48,p49,p50">
+                                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r)∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="TRK∈B ⤔ B">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="r∈resrt ∖ frm"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="nxt∈R → (B ⤔ B)">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="ℙ(B)"/>
+            <org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="r∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewrites:4"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="point_positionning/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="BLOCKS,ROUTES" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p21"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p20"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p23"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p22"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p25"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p24"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p26"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
+                        <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p28">
+                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p30"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p31"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p6"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p32"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p33"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p34"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p35"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p17"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p36"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p19"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p37"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p3"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p38"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p4"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p39"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p21"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p40"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p23"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p41"/>
+                                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p25"/>
+                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p42"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p43"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p32"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p44"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p35"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p45"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p36"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p46"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p37"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p47"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p38"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p48"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p39"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p49"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p40"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p50"/>
+                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p41"/>
+                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p13,p7,p9,p14,p2,p18,p1,p15,p5,p10,p26,p42,p43,p44,p45,p46,p47"/>
+                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p8,p16,p28,p13,p7,p9,p14,p2,p18,p1,p15,p5,p10,p26,p42,p43,p44,p45,p46,p47">
+                                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="r0∈frm">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈frm⇒rsrtbl∼[{r0}] ◁ nxt(r0)=rsrtbl∼[{r0}] ◁ ((dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r))"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="r∈resrt ∖ frm"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="r0∈frm⇒rsrtbl∼[{r0}] ◁ nxt(r0)=rsrtbl∼[{r0}] ◁ ((dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r))">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="rsrtbl∼[{r0}] ◁ nxt(r0)=rsrtbl∼[{r0}] ◁ ((dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r))">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewrites:4"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_2/inv8/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="b0,a" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p4"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees a,b0)" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
+                        <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+                        <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p12,p13,p14,p15">
+                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p17"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
+                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p18"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
+                                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p19"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
+                                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p21"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p23"/>
+                                                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p24"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p26"/>
+                                                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p25"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p28"/>
+                                                <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p27"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p30"/>
+                                                <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p29"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p32"/>
+                                                <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p31"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p33"/>
+                                                <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p3"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p34"/>
+                                                <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p5"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p35"/>
+                                                <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p7"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p36"/>
+                                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p20"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p37"/>
+                                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p22"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p38"/>
+                                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p26"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p39"/>
+                                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p28"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p40"/>
+                                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p30"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p41"/>
+                                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p32"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p42"/>
+                                                        <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p33"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p43"/>
+                                                        <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p34"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p44"/>
+                                                        <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p35"/>
+                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with a=(nxt(({b} ⩤ rsrtbl)(b0)))∼(b0)" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p14">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p46">
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p45"/>
+                                                                <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p17"/>
+                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in hyp" org.eventb.core.prHyps="p1">
+                                                                    <org.eventb.core.prAnte name="'">
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p47"/>
+                                                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
+                                                                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p47"/>
+                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in hyp" org.eventb.core.prHyps="p1">
+                                                                            <org.eventb.core.prAnte name="'">
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p48"/>
+                                                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
+                                                                                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p48"/>
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in hyp" org.eventb.core.prHyps="p1">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p49"/>
+                                                                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p45"/>
+                                                                                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p49"/>
+                                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p1">
+                                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50">
+                                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p1">
+                                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51">
+                                                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p1">
+                                                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52"/>
+                                                                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/>
+                                                                                                        </org.eventb.core.prRule>
+                                                                                                    </org.eventb.core.prAnte>
+                                                                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0.1.0.0.1"/>
+                                                                                                </org.eventb.core.prRule>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0.0.1"/>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0.0.1"/>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0.1"/>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a⦂BLOCKS,b0⦂BLOCKS·b0∈(LBT ∖ {b})∪{TRK(b)}∧b0∈ran(nxt(({b} ⩤ rsrtbl)(b0)))∧a=(nxt(({b} ⩤ rsrtbl)(b0)))∼(b0)∧a∈dom({b} ⩤ rsrtbl)⇒({b} ⩤ rsrtbl)(a)≠({b} ⩤ rsrtbl)(b0)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="a∈dom(rsrtbl) ∖ {b}">
+            <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬rsrtbl((nxt(rsrtbl(b0)))∼(b0))=rsrtbl(b0)">
+            <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="(nxt(rsrtbl(b0)))∼(b0)∈dom(rsrtbl) ∖ {b}">
+            <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="b0∈ran(nxt(({b} ⩤ rsrtbl)(b0)))">
+            <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬rsrtbl((nxt(rsrtbl(b0)))∼(b0))=({b} ⩤ rsrtbl)(b0)">
+            <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬({b} ⩤ rsrtbl)(a)=({b} ⩤ rsrtbl)(b0)">
+            <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬({b} ⩤ rsrtbl)((nxt(({b} ⩤ rsrtbl)(b0)))∼(b0))=({b} ⩤ rsrtbl)(b0)">
+            <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="a=(nxt(({b} ⩤ rsrtbl)(b0)))∼(b0)">
+            <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂BLOCKS,b0⦂BLOCKS·b0∈(LBT ∖ {b})∪{TRK(b)}∧b0∈ran(nxt(({b} ⩤ rsrtbl)(b0)))∧a=(nxt(({b} ⩤ rsrtbl)(b0)))∼(b0)∧a∈dom({b} ⩤ rsrtbl)⇒¬({b} ⩤ rsrtbl)(a)=({b} ⩤ rsrtbl)(b0)"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="a∈dom({b} ⩤ rsrtbl)">
+            <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="b0∈(LBT ∖ {b})∪{TRK(b)}∧b0∈ran(nxt(({b} ⩤ rsrtbl)(b0)))∧a=(nxt(({b} ⩤ rsrtbl)(b0)))∼(b0)∧a∈dom({b} ⩤ rsrtbl)⇒¬({b} ⩤ rsrtbl)(a)=({b} ⩤ rsrtbl)(b0)">
+            <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="(nxt(({b} ⩤ rsrtbl)(b0)))∼(b0)∈dom(rsrtbl) ∖ {b}">
+            <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="b0∈ran(nxt(rsrtbl(b0)))">
+            <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="b0∈(LBT ∖ {b})∪{TRK(b)}">
+            <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬rsrtbl((nxt(({b} ⩤ rsrtbl)(b0)))∼(b0))=({b} ⩤ rsrtbl)(b0)">
+            <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="a=(nxt(rsrtbl(b0)))∼(b0)">
+            <org.eventb.core.prIdent name="a" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="b0" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewrites:4"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="inv5/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r,y,x" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p4"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p21"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p22"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p23"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p25"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p26"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p12"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p27"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p16"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p28"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p18"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p29"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p20"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p30"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p21"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p31"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p23"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,y)" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34">
+                                        <org.eventb.core.prIdent name="x" org.eventb.core.type="BLOCKS"/>
+                                        <org.eventb.core.prIdent name="y" org.eventb.core.type="BLOCKS"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p35">
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37">
+                                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38">
+                                                                <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p1">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39">
+                                                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="">
+                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p40" org.eventb.core.prHyps=""/>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                    <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p41">
+                                                        <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p1"/>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="x ↦ y∈TRK⇒(∀r⦂ROUTES·r∈dom(nxt))∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)">
+            <org.eventb.core.prIdent name="x" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="y" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·r∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="(∀r⦂ROUTES·r∈dom(nxt))∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∀r⦂ROUTES·r∈dom(nxt))∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="x ↦ y∈TRK">
+            <org.eventb.core.prIdent name="x" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="y" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="r∈ROUTES">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∀r⦂ROUTES·r∈ROUTES⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS))"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∀r⦂ROUTES·⊤⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS))"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="r∈dom(nxt)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="inv6/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p4"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p23"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p25"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p26"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p27"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p12"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p28"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p16"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p29"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p18"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p30"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p20"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p31"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p23"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p25"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35">
+                                        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p36">
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38">
+                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p1">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39">
+                                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
+                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p40" org.eventb.core.prHyps=""/>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                            <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p41">
+                                                        <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p1"/>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="r∈frm">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="r∈ROUTES">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="r∈frm⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="r∈dom(nxt)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p13"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p14"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p15"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p19"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p20"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p21"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p22"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p23"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p18"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p24"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p25"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p20"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p26"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p21"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p5,p4,p10,p12,p11,p6,p8,p22,p23,p24,p25,p26">
+                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(BLOCKS×BLOCKS))∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ROUTES))⊆(∅ ⦂ ℙ(ROUTES))"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(BLOCKS×ROUTES))[∅ ⦂ ℙ(BLOCKS)]⊆(∅ ⦂ ℙ(ROUTES))"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈(∅ ⦂ ℙ(ROUTES)) ∖ (∅ ⦂ ℙ(ROUTES))⇒rtbl ▷ {r}=(∅ ⦂ ℙ(BLOCKS×ROUTES)) ▷ {r}"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈(∅ ⦂ ℙ(BLOCKS×BLOCKS))⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈(∅ ⦂ ℙ(ROUTES))⇒(∅ ⦂ ℙ(BLOCKS×ROUTES))∼[{r}] ◁ nxt(r)=(∅ ⦂ ℙ(BLOCKS×ROUTES))∼[{r}] ◁ (∅ ⦂ ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(BLOCKS))⊆(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="INITIALISATION/inv8/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈(∅ ⦂ ℙ(BLOCKS))∧b∈ran(nxt((∅ ⦂ ℙ(BLOCKS×ROUTES))(b)))∧a=(nxt((∅ ⦂ ℙ(BLOCKS×ROUTES))(b)))∼(b)∧a∈dom(∅ ⦂ ℙ(BLOCKS×ROUTES))⇒(∅ ⦂ ℙ(BLOCKS×ROUTES))(a)≠(∅ ⦂ ℙ(BLOCKS×ROUTES))(b)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_reservation/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p32"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p33"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p26"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p34"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p35"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p36"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p37"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p38"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p39"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p42"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p43"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p31"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p44"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p28"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p45"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p4"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p46"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p32"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p47"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p33"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p48"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p34"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p49"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p50"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p39"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p51"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p42"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p43"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p45"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p46"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p47"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p48"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p5,p14,p20,p24,p11,p15,p7,p9,p29,p18,p19,p3,p23,p1,p10,p25,p21,p6,p30,p12,p35,p36,p49,p50,p51,p52,p53,p54,p55,p56,p57">
+                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="r∉resrt"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="frm⊆resrt∪{r}"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬r∈resrt"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_freeing/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p31"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p32"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p25"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p33"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p34"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p35"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p36"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p37"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p38"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p40"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p41"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p30"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p42"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p27"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p43"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p44"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p31"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p45"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p32"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p46"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p33"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p47"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p36"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p48"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p49"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p40"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p50"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p51"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p42"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p43"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p46"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p13,p19,p23,p11,p14,p6,p9,p28,p17,p18,p2,p22,p1,p10,p24,p20,p5,p29,p8,p34,p47,p48,p49,p50,p51,p52,p53,p54,p55">
+                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="frm ∖ {r}⊆resrt ∖ {r}"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_freeing/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p31"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p32"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p25"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p33"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p34"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p35"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p36"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p37"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p38"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p40"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p41"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p30"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p42"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p27"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p43"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p44"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p31"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p45"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p32"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p46"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p33"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p47"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p36"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p48"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p49"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p40"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p50"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p51"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p42"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p43"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p46"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p13,p19,p23,p11,p14,p6,p9,p28,p17,p18,p2,p22,p1,p10,p24,p20,p5,p29,p8,p34,p47,p48,p49,p50,p51,p52,p53,p54,p55">
+                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="rsrtbl[OCC]⊆frm ∖ {r}"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_freeing/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p31"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p32"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p25"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p33"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p34"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p35"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p36"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p37"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p38"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p40"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p41"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p30"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p42"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p27"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p43"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p44"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p31"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p45"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p32"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p46"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p33"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p47"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p36"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p48"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p49"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p40"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p50"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p51"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p42"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p43"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p46"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p56">
+                                        <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p57">
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p4,p13,p19,p23,p11,p14,p6,p9,p28,p17,p18,p2,p22,p1,p10,p24,p20,p5,p29,p8,p34,p47,p48,p49,p50,p51,p52,p53,p54,p55,p57">
+                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="r0∈(resrt ∖ {r}) ∖ (frm ∖ {r})">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈(resrt ∖ {r}) ∖ (frm ∖ {r})⇒rtbl ▷ {r0}=rsrtbl ▷ {r0}"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="r0∈(resrt ∖ {r}) ∖ (frm ∖ {r})⇒rtbl ▷ {r0}=rsrtbl ▷ {r0}">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="rtbl ▷ {r0}=rsrtbl ▷ {r0}">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_freeing/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p31"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p32"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p25"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p33"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p34"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p35"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p36"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p37"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p38"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p40"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p41"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p30"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p42"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p27"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p43"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p44"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p31"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p45"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p32"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p46"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p33"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p47"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p36"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p48"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p49"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p40"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p50"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p41"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p51"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p42"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p43"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p45"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p46"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p56">
+                                        <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p57">
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p4,p13,p19,p23,p11,p14,p6,p9,p28,p17,p18,p2,p22,p1,p10,p24,p20,p5,p29,p8,p34,p47,p48,p49,p50,p51,p52,p53,p54,p55,p57">
+                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="r0∈frm ∖ {r}">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈frm ∖ {r}⇒rsrtbl∼[{r0}] ◁ nxt(r0)=rsrtbl∼[{r0}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="r0∈frm ∖ {r}⇒rsrtbl∼[{r0}] ◁ nxt(r0)=rsrtbl∼[{r0}] ◁ TRK">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="rsrtbl∼[{r0}] ◁ nxt(r0)=rsrtbl∼[{r0}] ◁ TRK">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/grd2/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p70"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p72"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p74"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p77"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p76"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p79"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p78"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p88"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p90"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p89"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p92"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p91"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p94"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p93"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p95"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p71"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p96"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p73"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p97"/>
+                                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p75"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p98"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p82"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p99"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p84"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p100"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p88"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p101"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p102"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p103"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p104"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p105"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p106"/>
+                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p97"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p107">
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p107" org.eventb.core.prHyps="p1">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p108">
+                                                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p108" org.eventb.core.prHyps="">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p109">
+                                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p109" org.eventb.core.prHyps=""/>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                            <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p110">
+                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p110" org.eventb.core.prHyps="p1"/>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p109" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p108" org.eventb.core.predicate="r∈ROUTES"/>
+        <org.eventb.core.prPred name="p110" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p107" org.eventb.core.predicate="r∈dom(fst)"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/grd3/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p18,p30">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34">
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p35"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p36"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p37"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p38"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p40"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p41"/>
+                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p42"/>
+                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p15"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p43"/>
+                                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p45"/>
+                                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p46"/>
+                                <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p33"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p47"/>
+                                <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p29"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p48"/>
+                                <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p4"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p49"/>
+                                <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p35"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p50"/>
+                                <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p36"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p51"/>
+                                <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p37"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p52"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p53"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p42"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p45"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p46"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p47"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p48"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p58"/>
+                                        <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p49"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p59"/>
+                                        <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p50"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p60"/>
+                                        <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p51"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p61">
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p3,p12,p20,p24,p10,p13,p6,p8,p31,p17,p19,p2,p23,p1,p9,p25,p21,p5,p32,p16,p28,p18,p30,p38,p52,p53,p54,p55,p56,p57,p58,p59,p60">
+                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                            <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p62">
+                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="p8"/>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="r∈frm"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="⊤∧⊤∧fst(r)∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="fst(r)∈resbl ∖ OCC"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="fst(r)∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="r∈dom(fst)"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="fst(r)∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧fst(r)∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p37"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p38"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p29"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p39"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p40"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p42"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p43"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p44"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p45"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p46"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p47"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p24"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p48"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p36"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p49"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p31"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p50"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p51"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p37"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p52"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p38"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p53"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p54"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p43"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p55"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p47"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p48"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p58"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p49"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p59"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p50"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p60"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p51"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p61"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p52"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p62"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p53"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p4,p14,p22,p26,p10,p15,p6,p8,p33,p19,p21,p2,p25,p1,p9,p27,p23,p5,p34,p18,p28,p20,p32,p12,p35,p11,p40,p54,p55,p56,p57,p58,p59,p60,p61,p62">
+                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="rsrtbl(fst(r))=r"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="LBT∪{fst(r)}⊆OCC∪{fst(r)}"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="r∈frm"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="fst(r)∈resbl ∖ OCC"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="fst(r)∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="LBT⊆OCC∪{fst(r)}"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="r∈dom(fst)"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/grd1/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p37"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p38"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p29"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p39"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p40"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p42"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p43"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p44"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p45"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p46"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p24"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p47"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p36"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p48"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p31"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p49"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p50"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p37"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p51"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p38"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p52"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p53"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p42"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p54"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p43"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p46"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p47"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p48"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p58"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p49"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p59"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p50"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p60"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p51"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p61"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p52"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p14,p22,p26,p10,p15,p6,p8,p33,p19,p21,p2,p25,p1,p9,p27,p23,p5,p34,p18,p28,p20,p32,p12,p35,p11,p40,p53,p54,p55,p56,p57,p58,p59,p60,p61">
+                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈resrt"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="rsrtbl(fst(r))=r"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="r∈frm"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="fst(r)∈resbl ∖ OCC"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="fst(r)∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="r∈dom(fst)"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/act2/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p71">
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p72"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p74"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p77"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p76"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p80"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps=""/>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="⊤∧⊤"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="r∈dom(fst)"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_2/grd3/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p71">
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p72"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p74"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p77"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p76"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p80"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps="p1"/>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="b∈dom(TRK)∧TRK∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="TRK∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="⊤∧TRK∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_2/c/WWD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p71">
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p72"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p74"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p77"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p76"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p82"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps=""/>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="b∈dom(TRK)∧TRK∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬TRK(b)∈OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="⊤∧⊤"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="TRK(b)∉OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="TRK∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_2/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p34"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p35"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p26"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p36"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p37"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p38"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p31"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p40"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p41"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p42"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p43"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p44"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p45"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p33"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p46"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p28"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p47"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p48"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p34"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p49"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p35"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p50"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p36"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p51"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p52"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p41"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p45"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p46"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p47"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p48"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p58"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p49"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p59"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p50"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p14,p20,p24,p12,p15,p6,p10,p29,p18,p19,p2,p23,p1,p11,p25,p21,p5,p30,p7,p9,p32,p37,p38,p51,p52,p53,p54,p55,p56,p57,p58,p59">
+                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="b∈OCC"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬TRK(b)∈OCC"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="TRK(b)∉OCC"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="TRK∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="LBT⊆OCC∪{TRK(b)}"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_2/grd2/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p0">
+        <org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p0"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="TRK(b)∉OCC"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_2/grd3/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p39"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p29"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p40"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p41"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p18"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p42"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p34"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p43"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p44"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p45"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p46"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p47"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p48"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p25"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p49"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p37"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p50"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p31"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p51"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p4"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p52"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p38"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p53"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p54"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p55"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p56"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p45"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p48"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p58"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p49"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p59"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p50"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p60"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p51"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p61"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p52"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p62"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p53"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p63"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p54"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p5,p16,p23,p27,p13,p17,p7,p11,p32,p21,p22,p3,p26,p1,p12,p28,p24,p6,p33,p8,p10,p36,p35,p14,p20,p2,p41,p42,p55,p56,p57,p58,p59,p60,p61,p62,p63">
+                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="b∈OCC"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬TRK(b)∈OCC"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="b ↦ TRK(b)∈nxt(rsrtbl(b))"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="rsrtbl(b)∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="TRK(b)∉OCC"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="TRK∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_2/act1/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p71">
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p72"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p74"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p77"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p76"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p82"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps=""/>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="b∈dom(TRK)∧TRK∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬TRK(b)∈OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="⊤∧⊤"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="TRK(b)∉OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="TRK∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_2/act1/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p81">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p78"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p77"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p80"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p79"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p81" org.eventb.core.prHyps=""/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬TRK(b)∈OCC"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="TRK(b)∉OCC"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="OCC∪{TRK(b)}=OCC∪{TRK(b)}"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_1/n/WWD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p32"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p33"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p26"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p34"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p35"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p36"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p37"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p38"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p39"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p42"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p43"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p31"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p44"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p28"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p45"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p46"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p32"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p47"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p33"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p48"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p34"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p49"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p50"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p39"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p51"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p42"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p43"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p45"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p46"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p47"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p48"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p58">
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p4,p14,p20,p24,p12,p15,p5,p10,p29,p18,p19,p2,p23,p1,p11,p25,p21,p6,p30,p7,p35,p36,p49,p50,p51,p52,p53,p54,p55,p56,p57">
+                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p59">
+                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p10"/>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p60">
+                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional image goal for rsrtbl(b)" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p10">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p61">
+                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p20">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
+                                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p63">
+                                                                <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p63" org.eventb.core.prHyps=""/>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                    <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p64">
+                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p20"/>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="rsrtbl(b)∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="b∈LBT"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="rsrtbl(b)∈resrt"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="b∉dom(TRK)"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="rsrtbl(b)∈ROUTES"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="b∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES∧rsrtbl(b)∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgGoal"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_1/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p32"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p33"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p26"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p34"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p35"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p36"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p37"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p38"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p39"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p42"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p43"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p31"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p44"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p28"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p45"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p46"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p32"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p47"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p33"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p48"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p34"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p49"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p50"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p39"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p51"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p42"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p43"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p45"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p46"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p47"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p48"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p14,p20,p24,p12,p15,p7,p10,p29,p18,p19,p2,p23,p1,p11,p25,p21,p6,p30,p5,p35,p36,p49,p50,p51,p52,p53,p54,p55,p56,p57">
+                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="({b} ⩤ rsrtbl)[OCC ∖ {b}]⊆frm"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="b∈LBT"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="b∉dom(TRK)"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_1/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p23"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p26"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p25"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p28"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p27"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p29"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p30"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p31"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p18"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p35"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p36"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p26"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p37"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p28"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p38"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p29"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p39"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p30"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p40"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p31"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
+                                        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p42">
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p3,p1,p12,p42">
+                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="b∈LBT"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="b∉dom(TRK)"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="(rsrtbl∼[{r}] ∖ {b}) ◁ nxt(r)=(rsrtbl∼[{r}] ∖ {b}) ◁ TRK">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="r∈frm">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="r∈frm⇒(rsrtbl∼[{r}] ∖ {b}) ◁ nxt(r)=(rsrtbl∼[{r}] ∖ {b}) ◁ TRK">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒({b} ⩤ rsrtbl)∼[{r}] ◁ nxt(r)=({b} ⩤ rsrtbl)∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒(rsrtbl∼[{r}] ∖ {b}) ◁ nxt(r)=(rsrtbl∼[{r}] ∖ {b}) ◁ TRK"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_1/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p32"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p33"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p26"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p34"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p35"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p36"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p37"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p38"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p39"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p42"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p43"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p31"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p44"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p28"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p45"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p46"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p32"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p47"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p33"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p48"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p34"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p49"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p50"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p39"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p51"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p42"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p43"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p45"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p46"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p47"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p48"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p14,p20,p24,p12,p15,p7,p10,p29,p18,p19,p2,p23,p1,p11,p25,p21,p6,p30,p5,p35,p36,p49,p50,p51,p52,p53,p54,p55,p56,p57">
+                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="LBT ∖ {b}⊆OCC ∖ {b}"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="b∈LBT"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="b∉dom(TRK)"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_1/grd1/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p32"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p33"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p26"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p34"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p35"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p36"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p37"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p38"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p39"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p42"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p43"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p31"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p44"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p28"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p45"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p46"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p32"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p47"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p33"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p48"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p34"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p49"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p50"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p39"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p51"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p42"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p43"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p45"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p46"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p47"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p48"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p14,p20,p24,p12,p15,p7,p10,p29,p18,p19,p2,p23,p1,p11,p25,p21,p6,p30,p5,p35,p36,p49,p50,p51,p52,p53,p54,p55,p56,p57">
+                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="b∈OCC"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="b∈LBT"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="b∉dom(TRK)"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_1/grd2/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p81">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p78"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p77"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p80"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p79"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p81" org.eventb.core.prHyps=""/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬b∈dom(TRK)">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="b∉dom(TRK)">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="nxt(rsrtbl(b))=nxt(rsrtbl(b))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_2/grd3/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p71">
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p72"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p74"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p77"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p76"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p80"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps="p1"/>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="b∈dom(TRK)∧TRK∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="TRK∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="⊤∧TRK∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_2/n/WWD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p34"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p35"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p26"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p36"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p37"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p38"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p39"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p40"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p42"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p43"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p44"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p33"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p45"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p28"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p46"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p47"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p34"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p48"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p35"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p49"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p36"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p50"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p51"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p40"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p43"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p45"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p46"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p47"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p48"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p58"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p49"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p4,p14,p20,p24,p12,p15,p5,p9,p29,p18,p19,p2,p23,p1,p11,p25,p21,p6,p30,p7,p10,p31,p32,p37,p50,p51,p52,p53,p54,p55,p56,p57,p58">
+                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p60">
+                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p9"/>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p61">
+                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional image goal for rsrtbl(b)" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p9">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p62">
+                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p20">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p63">
+                                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p64">
+                                                                <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p64" org.eventb.core.prHyps=""/>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                    <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p65">
+                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="p20"/>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="rsrtbl(b)∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="TRK(b)∈OCC"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="TRK∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="b∈LBT"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="rsrtbl(b)∈resrt"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="rsrtbl(b)∈ROUTES"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="b∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES∧rsrtbl(b)∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgGoal"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_2/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p34"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p35"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p26"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p36"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p37"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p38"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p39"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p40"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p42"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p43"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p44"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p33"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p45"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p28"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p46"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p47"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p34"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p48"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p35"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p49"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p36"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p50"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p51"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p40"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p43"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p45"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p46"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p47"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p48"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p58"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p49"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p14,p20,p24,p12,p15,p7,p10,p29,p18,p19,p2,p23,p1,p11,p25,p21,p6,p30,p5,p9,p31,p32,p37,p50,p51,p52,p53,p54,p55,p56,p57,p58">
+                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="({b} ⩤ rsrtbl)[OCC ∖ {b}]⊆frm"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="TRK(b)∈OCC"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="TRK∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="b∈LBT"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_2/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p8"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p7"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p12"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p11"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p23"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p26"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p25"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p28"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p27"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p29"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p6"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p30"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p31"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p10"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p18"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p35"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p36"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p26"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p37"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p28"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p38"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p29"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p39"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p30"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p40"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p31"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
+                                        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p42">
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p4,p1,p3,p2,p42">
+                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="b∈LBT"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="(rsrtbl∼[{r}] ∖ {b}) ◁ nxt(r)=(rsrtbl∼[{r}] ∖ {b}) ◁ TRK">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="r∈frm">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="r∈frm⇒(rsrtbl∼[{r}] ∖ {b}) ◁ nxt(r)=(rsrtbl∼[{r}] ∖ {b}) ◁ TRK">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="TRK(b)∈OCC"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒({b} ⩤ rsrtbl)∼[{r}] ◁ nxt(r)=({b} ⩤ rsrtbl)∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒(rsrtbl∼[{r}] ∖ {b}) ◁ nxt(r)=(rsrtbl∼[{r}] ∖ {b}) ◁ TRK"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_2/grd1/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p34"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p35"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p26"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p36"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p37"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p38"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p39"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p40"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p42"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p43"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p44"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p33"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p45"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p28"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p46"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p47"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p34"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p48"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p35"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p49"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p36"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p50"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p51"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p40"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p43"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p45"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p46"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p47"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p48"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p58"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p49"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p14,p20,p24,p12,p15,p7,p10,p29,p18,p19,p2,p23,p1,p11,p25,p21,p6,p30,p5,p9,p31,p32,p37,p50,p51,p52,p53,p54,p55,p56,p57,p58">
+                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="b∈OCC"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="TRK(b)∈OCC"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="TRK∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="b∈LBT"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_2/grd2/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p79">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p78"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p77"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p79" org.eventb.core.prHyps=""/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="nxt(rsrtbl(b))=nxt(rsrtbl(b))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_2/grd3/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p39"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p40"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p29"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p41"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p42"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p18"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p43"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p44"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p45"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p46"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p47"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p48"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p25"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p49"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p38"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p50"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p31"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p51"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p4"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p52"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p53"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p54"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p55"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p56"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p45"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p48"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p58"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p49"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p59"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p50"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p60"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p51"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p61"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p52"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p62"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p53"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p63"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p54"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="p64">
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p64,p32" org.eventb.core.prInfHyps="p66"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p32"/>
+                                                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p67"/>
+                                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p66"/>
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="p5,p16,p23,p27,p13,p17,p6,p10,p33,p21,p22,p3,p26,p2,p12,p28,p24,p7,p34,p8,p11,p35,p36,p37,p14,p20,p1,p42,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p67">
+                                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="rsrtbl(b)∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))⇒nxt(rsrtbl(b))(b)∈OCC"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="TRK(b)∈OCC"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="TRK∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="b∈LBT"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="⊤⇒nxt(rsrtbl(b))∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="nxt(rsrtbl(b))∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="nxt(rsrtbl(b))(b)∈OCC"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))⇒nxt(rsrtbl(b))∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="BACK_MOVE_2/act4/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p71">
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p72"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p74"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p77"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p76"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p80"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps=""/>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="b∈dom(TRK)∧TRK∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="⊤∧⊤"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="TRK∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="b∈dom(TRK)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="point_positionning/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="y,x" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p5"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p8"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p7"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p18"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p21"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p23"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p1"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p25"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p4"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p26"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p6"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p27"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p29"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p30"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p15"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p31"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p21"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p23"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p35"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p25"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p36"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p26"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p37"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p27"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,y)" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39">
+                                        <org.eventb.core.prIdent name="x" org.eventb.core.type="BLOCKS"/>
+                                        <org.eventb.core.prIdent name="y" org.eventb.core.type="BLOCKS"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p40">
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p2,p34,p40">
+                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈(dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r)⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈(dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r)⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="x ↦ y∈(dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r)⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="x" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="y" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈(dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r)⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∃r⦂ROUTES·x ↦ y∈nxt(r)">
+            <org.eventb.core.prIdent name="x" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="y" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="x ↦ y∈(dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r)">
+            <org.eventb.core.prIdent name="x" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="y" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="r∈resrt ∖ frm"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="point_positionning/act1/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p70"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p72"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p74"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p77"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p76"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p79"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p78"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p88"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p90"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p89"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p92"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p91"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p94"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p93"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p95"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p71"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p96"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p73"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p97"/>
+                                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p75"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p98"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p82"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p99"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p84"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p100"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p88"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p101"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p102"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p103"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p104"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p105"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p106"/>
+                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p97"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p107">
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p107" org.eventb.core.prHyps="p1">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p108">
+                                                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p108" org.eventb.core.prHyps="">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p109">
+                                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p109" org.eventb.core.prHyps=""/>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                            <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p110">
+                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p110" org.eventb.core.prHyps="p1"/>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p109" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p110" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p108" org.eventb.core.predicate="r∈ROUTES"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p107" org.eventb.core.predicate="r∈dom(nxt)"/>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_reservation/rsrtbl/EQL" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+        <org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="0">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p4"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="0">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p10"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p1"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p3"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p19"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="0">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p20"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p21"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p14"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p22"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p17"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p23"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p18"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p24"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p19"/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬r∈resrt">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="B∈BLOCKS">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="A∈BLOCKS">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="r∉resrt">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/act1/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="0">
+                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
+                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p5"/>
+                <org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p2">
+                        <org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p2" org.eventb.core.prHyps="p2"/>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p1">
+                        <org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p1" org.eventb.core.prHyps="p1"/>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="A∈BLOCKS">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="B∈BLOCKS">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="r∈dom(fst)"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_formation/grd2/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p70"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p72"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p74"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p77"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p76"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p79"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p78"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p88"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p90"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p89"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p92"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p91"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p94"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p93"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p95"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p71"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p96"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p73"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p97"/>
+                                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p75"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p98"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p82"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p99"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p84"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p100"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p88"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p101"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p102"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p103"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p104"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p105"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p106"/>
+                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p97"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p107">
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p107" org.eventb.core.prHyps="p1">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p108">
+                                                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p108" org.eventb.core.prHyps="">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p109">
+                                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p109" org.eventb.core.prHyps=""/>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                            <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p110">
+                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p110" org.eventb.core.prHyps="p1"/>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p109" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p110" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p108" org.eventb.core.predicate="r∈ROUTES"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p107" org.eventb.core.predicate="r∈dom(nxt)"/>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_formation/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p34"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p35"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p25"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p36"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p37"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p3">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39">
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p41"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p42"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p43"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p16"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p44"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p45"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p46"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p21"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p47"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p33"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p48"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p27"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p49"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p4"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p50"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p34"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p51"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p35"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p52"/>
+                                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p36"/>
+                                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p53"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p42"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p54"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p43"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p46"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p47"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p48"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p58"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p49"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p59"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p50"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p60"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p51"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p61"/>
+                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p52"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p5,p13,p19,p23,p11,p14,p7,p9,p28,p17,p18,p3,p22,p2,p10,p24,p20,p6,p29,p31,p30,p32,p1,p37,p53,p54,p55,p56,p57,p58,p59,p60,p61">
+                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="r∈resrt"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="⊤∧r∈resrt"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="r∈resrt ∖ frm"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="frm∪{r}⊆resrt"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="frm⊆resrt∧r∈resrt"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="r∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_formation/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p34"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p35"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p25"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p36"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p37"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p38"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p39"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p40"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p42"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p43"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p44"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p33"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p45"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p27"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p46"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p4"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p47"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p34"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p48"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p35"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p49"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p36"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p50"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p51"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p40"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p43"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p45"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p46"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p47"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p48"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p58"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p49"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p5,p13,p19,p23,p11,p14,p7,p9,p28,p17,p18,p3,p22,p2,p10,p24,p20,p6,p29,p31,p30,p32,p1,p37,p50,p51,p52,p53,p54,p55,p56,p57,p58">
+                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="rsrtbl[OCC]⊆frm∪{r}"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="r∈resrt ∖ frm"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="r∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_formation/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p34"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p35"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p25"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p36"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p37"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p38"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p39"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p40"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p42"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p43"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p44"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p33"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p45"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p27"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p46"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p4"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p47"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p34"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p48"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p35"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p49"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p36"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p50"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p51"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p40"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p43"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p44"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p45"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p46"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p47"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p48"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p58"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p49"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
+                                        <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p60">
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p5,p13,p19,p23,p11,p14,p7,p9,p28,p17,p18,p3,p22,p2,p10,p24,p20,p6,p29,p31,p30,p32,p1,p37,p50,p51,p52,p53,p54,p55,p56,p57,p58,p60">
+                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="r0∈resrt ∖ (frm∪{r})⇒rtbl ▷ {r0}=rsrtbl ▷ {r0}">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="r0∈resrt ∖ (frm∪{r})">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="r∈resrt ∖ frm"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="rtbl ▷ {r0}=rsrtbl ▷ {r0}">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈resrt ∖ (frm∪{r})⇒rtbl ▷ {r0}=rsrtbl ▷ {r0}"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="r∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_formation/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p18"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p23"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p26"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p25"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p27"/>
+                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p28"/>
+                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p29"/>
+                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p30"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p31"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p16"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p20"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p35"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p26"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p36"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p27"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p37"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p28"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p38"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p29"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39">
+                                        <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p40">
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p2,p3,p1,p40">
+                                                    <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="r0∈frm∪{r}⇒rsrtbl∼[{r0}] ◁ nxt(r0)=rsrtbl∼[{r0}] ◁ TRK">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈frm∪{r}⇒rsrtbl∼[{r0}] ◁ nxt(r0)=rsrtbl∼[{r0}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="rsrtbl∼[{r0}] ◁ nxt(r0)=rsrtbl∼[{r0}] ◁ TRK">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="r∈resrt ∖ frm"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="r0∈frm∪{r}">
+            <org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="inv1/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p77"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p89"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p88"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p90"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p70"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p91"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p72"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p92"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p74"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p79"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p81"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p85"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p87"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p97"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p89"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p98"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p99"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p100"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p92"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p101"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H"/>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I"/>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G"/>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F"/>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H"/>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I"/>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C"/>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F"/>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E"/>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F"/>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D"/>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I"/>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H"/>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="TRK∈{A,B,C,D,E,F,G,H,I} ⤔ {A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="inv2/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0" org.eventb.core.prSets="BLOCKS">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p69"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p68"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p70"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p72"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p74"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p76"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p77"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p88"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p89"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p69"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p90"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p71"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p91"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p73"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p78"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p80"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p84"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p86"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p88"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p97"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p89"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p98"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p99"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p91"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prHyps="p1">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p100" org.eventb.core.prInfHyps="p101"/>
+                                                        <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p100"/>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬D=E"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=H"/>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=I"/>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=G"/>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬B=C"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F"/>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=G"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=G"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬G=H"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=F"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=H"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=I"/>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=F"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬H=I"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C"/>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=I"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬E=F"/>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=E"/>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=F"/>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬C=D"/>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=I"/>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=I"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=G"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬F=G"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=H"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H"/>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=H"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=H"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=D"/>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=E"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=I"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="TRK∈{A,B,C,D,E,F,G,H,I} ⤔ {A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="inv3/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0" org.eventb.core.prSets="BLOCKS">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p69"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p68"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p70"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p72"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p74"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p76"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p77"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p88"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p89"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p69"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p90"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p71"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p91"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p73"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p78"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p80"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p84"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p86"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p88"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p97"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p89"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p98"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p99"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p91"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prHyps="p1">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p100" org.eventb.core.prInfHyps="p101"/>
+                                                        <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p100"/>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬D=E"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=H"/>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=I"/>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=G"/>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬B=C"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F"/>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=G"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=G"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬G=H"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=F"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=H"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=I"/>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=F"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬H=I"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C"/>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=I"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬E=F"/>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=E"/>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=F"/>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬C=D"/>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=I"/>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=I"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=G"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬F=G"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=H"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H"/>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=H"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=H"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=D"/>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=E"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=I"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="TRK∈{A,B,C,D,E,F,G,H,I} ⤔ {A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="inv4/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p77"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p89"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p88"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p90"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p70"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p91"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p72"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p92"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p74"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p79"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p81"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p85"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p87"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p97"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p89"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p98"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p99"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p100"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p92"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p101">
+                                                        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p101" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p103" org.eventb.core.prHyps="p102">
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prHyps="p2">
+                                                                    <org.eventb.core.prAnte name="'">
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p104" org.eventb.core.prInfHyps="p105"/>
+                                                                        <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p104"/>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H"/>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I"/>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G"/>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F"/>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G"/>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="r∈resrt ∖ frm">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H"/>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I"/>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C"/>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F"/>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="rtbl ▷ {r}=rsrtbl ▷ {r}">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E"/>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F"/>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D"/>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I"/>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H"/>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D"/>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="TRK∈{A,B,C,D,E,F,G,H,I} ⤔ {A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="inv5/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="y,x" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p93">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p77"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p89"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p88"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p90"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p70"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p91"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p72"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p92"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p74"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p102">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p79"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p81"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p85"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p97"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p87"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p98"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p89"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p99"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p100"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p101"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p92"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,y)" org.eventb.core.prGoal="p102" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p103">
+                                                        <org.eventb.core.prIdent name="x" org.eventb.core.type="BLOCKS"/>
+                                                        <org.eventb.core.prIdent name="y" org.eventb.core.type="BLOCKS"/>
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p103" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p105" org.eventb.core.prHyps="p104">
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prHyps="p2">
+                                                                    <org.eventb.core.prAnte name="'">
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p106" org.eventb.core.prInfHyps="p107"/>
+                                                                        <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p106"/>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H"/>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I"/>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G"/>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H"/>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I"/>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="∃r⦂ROUTES·x ↦ y∈nxt(r)">
+            <org.eventb.core.prIdent name="x" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="y" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="x" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="y" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C"/>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F"/>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E"/>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F"/>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D"/>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I"/>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H"/>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D"/>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E"/>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="x ↦ y∈TRK">
+            <org.eventb.core.prIdent name="x" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="y" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p107" org.eventb.core.predicate="TRK∈{A,B,C,D,E,F,G,H,I} ⤔ {A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="inv6/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p77"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p89"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p88"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p91"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p90"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p92"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p70"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p93"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p72"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p94"/>
+                                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p74"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p79"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p81"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p97"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p85"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p98"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p87"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p99"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p89"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p100"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p101"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p102"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p103"/>
+                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p94"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p104">
+                                                        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p104" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p106" org.eventb.core.prHyps="p105">
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prHyps="p2">
+                                                                    <org.eventb.core.prAnte name="'">
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p107" org.eventb.core.prInfHyps="p108"/>
+                                                                        <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p107"/>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H"/>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I"/>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G"/>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H"/>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I"/>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C"/>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F"/>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E"/>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="r∈frm">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F"/>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D"/>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I"/>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H"/>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D"/>
+        <org.eventb.core.prPred name="p107" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p108" org.eventb.core.predicate="TRK∈{A,B,C,D,E,F,G,H,I} ⤔ {A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="inv7/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0" org.eventb.core.prSets="BLOCKS">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p69"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p68"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p70"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p72"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p74"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p76"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p77"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p88"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p90"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p89"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p91"/>
+                                        <org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p69"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p92"/>
+                                        <org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p71"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p93"/>
+                                        <org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p73"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p78"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p80"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p84"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p97"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p86"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p98"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p88"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p99"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p100"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p101"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p102"/>
+                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p93"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prHyps="p1">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p103" org.eventb.core.prInfHyps="p104"/>
+                                                        <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p103"/>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬D=E"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=H"/>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=I"/>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=G"/>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬B=C"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=G"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=G"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬G=H"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=F"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=H"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=I"/>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=F"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬H=I"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C"/>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=I"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬E=F"/>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=E"/>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=F"/>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬C=D"/>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=I"/>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=I"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=G"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬F=G"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=H"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H"/>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=H"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=H"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=D"/>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=E"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=I"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="TRK∈{A,B,C,D,E,F,G,H,I} ⤔ {A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+    </org.eventb.core.prProof>
+</org.eventb.core.prFile>
diff --git a/Train_B_Book/train_1.bps b/Train_B_Book/train_1.bps
new file mode 100644
index 0000000000000000000000000000000000000000..dc19b91bd62d06f7210c231d2cea70c8d882451d
--- /dev/null
+++ b/Train_B_Book/train_1.bps
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.psFile>
+    <org.eventb.core.psStatus name="inv5/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="inv6/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="inv8/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="thm1/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="thm1/THM" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="thm2/THM" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="thm3/THM" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="INITIALISATION/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="INITIALISATION/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="INITIALISATION/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="INITIALISATION/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="INITIALISATION/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="INITIALISATION/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="INITIALISATION/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="INITIALISATION/inv8/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="route_reservation/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="route_reservation/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="route_reservation/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="route_reservation/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="route_reservation/inv8/INV" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="route_freeing/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="route_freeing/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="route_freeing/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="route_freeing/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/grd2/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/grd3/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/inv3/INV" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/inv8/INV" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/grd1/GRD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/act2/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_2/grd3/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_2/c/WWD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_2/inv3/INV" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_2/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_2/grd2/GRD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_2/grd3/GRD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_2/act1/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_2/act1/SIM" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_1/n/WWD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_1/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_1/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_1/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_1/inv7/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_1/inv8/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_1/grd1/GRD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_1/grd2/GRD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_1/grd3/GRD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_1/grd4/GRD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_2/grd3/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_2/n/WWD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_2/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_2/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_2/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_2/inv7/INV" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_2/inv8/INV" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_2/grd1/GRD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_2/grd2/GRD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_2/grd3/GRD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_2/grd4/GRD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_2/act4/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="point_positionning/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="point_positionning/inv5/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="point_positionning/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="point_positionning/act1/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="route_formation/grd2/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="route_formation/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="route_formation/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="route_formation/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="route_formation/inv6/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+</org.eventb.core.psFile>
diff --git a/Train_B_Book/train_1.bum b/Train_B_Book/train_1.bum
new file mode 100644
index 0000000000000000000000000000000000000000..52c9015dbaa72951d639ddf266b6bd4147444632
--- /dev/null
+++ b/Train_B_Book/train_1.bum
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.machineFile org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter" org.eventb.texttools.text_lastmodified="1390826033553" org.eventb.texttools.text_representation="machine train_1 //&#10; refines train_0  sees train_ctx0&#10;&#10;variables resrt // set of reserved routes&#10;          resbl // set of reserved blocks&#10;          rsrtbl // reserved route of reserved block&#10;          OCC // occupied block&#10;          TRK // physical track&#10;          frm // set of formed routes&#10;          LBT // last block of the train&#10;&#10;&#10;invariants&#10;   @inv1 TRK ∈ BLOCKS ⤔ BLOCKS // TRK is a partial injection between blocks&#10;   @inv2 frm ⊆ resrt // formed routes are reserved routes FUN-7&#10;   @inv3 rsrtbl[OCC] ⊆ frm // reserved routes of occupied block are formed routes&#10;   @inv4 ∀r· r∈resrt∖frm ⇒  rtbl▷{r} = rsrtbl▷{r} // for routes which are reserved but not yet formed: we resrve the full route&#10;   @inv5 ∀x,y· x↦y∈TRK ⇒ (∃r·r∈ROUTES ∧ x↦y∈nxt(r))&#10;   @inv6 ∀r· r∈frm ⇒ rsrtbl∼[{r}]◁nxt(r)  = rsrtbl∼[{r}]◁TRK // for each formed route the route corresponds to the physical track&#10;   @inv7 LBT ⊆ OCC // the last blocks of the trains are all occupied&#10;   @inv8 ∀a,b· b∈LBT ∧ b∈ran(nxt(rsrtbl(b)))&#10;                     ∧ a=(nxt(rsrtbl(b)))∼(b)&#10;                     ∧ a∈dom(rsrtbl) ⇒ rsrtbl(a)≠rsrtbl(b) //  all predecessors of last blocks are not reserved or reserved for another route&#10;  theorem @thm1 ∀b·b∈OCC ∧ b∈dom(TRK) ⇒ (nxt(rsrtbl(b)))(b)=TRK(b)&#10;  theorem @thm2 ran(lst)∩(dom(TRK)∖ran(fst))=∅&#10;  theorem @thm3 ran(fst)∩(ran(TRK)∖ran(lst))=∅&#10;&#10;events&#10;  event INITIALISATION&#10;    then&#10;      @act1 resrt ≔ ∅&#10;      @act2 resbl ≔ ∅&#10;      @act3 rsrtbl ≔ ∅&#10;      @act4 OCC ≔ ∅&#10;      @act5 TRK ≔ ∅&#10;      @act6 frm ≔ ∅&#10;      @act7 LBT ≔ ∅&#10;  end&#10;&#10;  event route_reservation extends route_reservation&#10;  end&#10;&#10;  event route_freeing extends route_freeing&#10;  begin&#10;      @act2 frm ≔ frm∖{r}&#10;  end&#10;&#10;  event FRONT_MOVE_1 // the train enters its route&#10;  refines FRONT_MOVE_1&#10;    any r&#10;    where&#10;      @grd1 r ∈ frm&#10;      @grd2 fst(r) ∈ resbl∖OCC&#10;      @grd3 rsrtbl(fst(r)) = r&#10;    then&#10;      @act1 OCC ≔ OCC ∪ {fst(r)}&#10;      @act2 LBT ≔ LBT ∪ {fst(r)}&#10;  end&#10;&#10;  event FRONT_MOVE_2 // the front of the train moves&#10;  refines FRONT_MOVE_2&#10;    any b&#10;    where&#10;      @grd1 b∈OCC&#10;      @grd2 b∈dom(TRK)&#10;      @grd3 TRK(b) ∉ OCC&#10;    with&#10;      @c c=TRK(b)&#10;    then&#10;      @act1 OCC ≔ OCC∪{TRK(b)}&#10;  end&#10;&#10;  event BACK_MOVE_1 // the train leaves its route&#10;  refines BACK_MOVE&#10;    any b&#10;    where&#10;      @grd1 b∈LBT&#10;      @grd2 b ∉ dom(TRK)&#10;    with&#10;      @n n=nxt(rsrtbl(b))&#10;    then&#10;      @act1 OCC ≔ OCC∖{b}&#10;      @act2 rsrtbl ≔ {b}⩤rsrtbl&#10;      @act3 resbl ≔ resbl∖{b}&#10;      @act4 LBT ≔ LBT∖{b}&#10;  end&#10;&#10;  event BACK_MOVE_2 // the back of the train moves&#10;  refines BACK_MOVE&#10;    any b&#10;    where&#10;      @grd1 b∈LBT&#10;      @grd2 b∈dom(TRK)&#10;      @grd3 TRK(b)∈OCC&#10;    with&#10;      @n n=nxt(rsrtbl(b))&#10;    then&#10;      @act1 OCC ≔ OCC∖{b}&#10;      @act2 rsrtbl ≔ {b}⩤rsrtbl&#10;      @act3 resbl ≔ resbl∖{b}&#10;      @act4 LBT ≔ (LBT∖{b})∪{TRK(b)}&#10;  end&#10;&#10;  event point_positionning&#10;    any r&#10;    where&#10;      @grd1 r∈resrt∖frm&#10;    then&#10;      @act1 TRK ≔ ((dom(nxt(r))⩤TRK)⩥ran(nxt(r))) ∪ nxt(r)&#10;  end&#10;&#10;  event route_formation&#10;    any r&#10;    where&#10;      @grd1 r∈resrt∖frm&#10;      @grd2 rsrtbl∼[{r}]◁nxt(r) = rsrtbl∼[{r}]◁TRK&#10;    then&#10;      @act1 frm≔frm∪{r}&#10;  end&#10;end&#10;" version="5">
+<org.eventb.core.refinesMachine name="internal_refines1" org.eventb.core.target="train_0"/>
+<org.eventb.core.seesContext name="internal_sees1" org.eventb.core.target="train_ctx0"/>
+<org.eventb.core.event name="internal_evt1" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="INITIALISATION">
+<org.eventb.core.action name="internal_act1" org.eventb.core.assignment="resrt ≔ ∅" org.eventb.core.label="act1"/>
+<org.eventb.core.action name="internal_act2" org.eventb.core.assignment="resbl ≔ ∅" org.eventb.core.label="act2"/>
+<org.eventb.core.action name="internal_act3" org.eventb.core.assignment="rsrtbl ≔ ∅" org.eventb.core.label="act3"/>
+<org.eventb.core.action name="internal_act4" org.eventb.core.assignment="OCC ≔ ∅" org.eventb.core.label="act4"/>
+<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="TRK ≔ ∅" org.eventb.core.label="act5"/>
+<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="frm ≔ ∅" org.eventb.core.label="act6"/>
+<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="LBT ≔ ∅" org.eventb.core.label="act7"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element1" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation">
+<org.eventb.core.refinesEvent name="internal_refines1" org.eventb.core.target="route_reservation"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element2" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing">
+<org.eventb.core.refinesEvent name="internal_refines1" org.eventb.core.target="route_freeing"/>
+<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="frm ≔ frm∖{r}" org.eventb.core.label="act2"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element3" org.eventb.core.comment="the train enters its route" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="FRONT_MOVE_1">
+<org.eventb.core.refinesEvent name="_Gq6UgYdMEeOSfLkA9HaR6w" org.eventb.core.target="FRONT_MOVE_1"/>
+<org.eventb.core.parameter name="_QdStMIdPEeOSfLkA9HaR6w" org.eventb.core.identifier="r"/>
+<org.eventb.core.guard name="_QdStMYdPEeOSfLkA9HaR6w" org.eventb.core.label="grd1" org.eventb.core.predicate="r ∈ frm"/>
+<org.eventb.core.guard name="_QdStModPEeOSfLkA9HaR6w" org.eventb.core.label="grd2" org.eventb.core.predicate="fst(r) ∈ resbl∖OCC"/>
+<org.eventb.core.guard name="_QdTUQIdPEeOSfLkA9HaR6w" org.eventb.core.label="grd3" org.eventb.core.predicate="rsrtbl(fst(r)) = r"/>
+<org.eventb.core.action name="_QdTUQYdPEeOSfLkA9HaR6w" org.eventb.core.assignment="OCC ≔ OCC ∪ {fst(r)}" org.eventb.core.label="act1"/>
+<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="LBT ≔ LBT ∪ {fst(r)}" org.eventb.core.label="act2"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element4" org.eventb.core.comment="the front of the train moves" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="FRONT_MOVE_2">
+<org.eventb.core.refinesEvent name="_Gq7ioIdMEeOSfLkA9HaR6w" org.eventb.core.target="FRONT_MOVE_2"/>
+<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="b"/>
+<org.eventb.core.guard name="internal_element1" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈OCC"/>
+<org.eventb.core.guard name="internal_element2" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)"/>
+<org.eventb.core.guard name="internal_element3" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b) ∉ OCC"/>
+<org.eventb.core.witness name="internal_wit1" org.eventb.core.label="c" org.eventb.core.predicate="c=TRK(b)"/>
+<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="OCC ≔ OCC∪{TRK(b)}" org.eventb.core.label="act1"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element5" org.eventb.core.comment="the train leaves its route" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="BACK_MOVE_1">
+<org.eventb.core.refinesEvent name="internal_refines1" org.eventb.core.target="BACK_MOVE"/>
+<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="b"/>
+<org.eventb.core.guard name="internal_element1" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT"/>
+<org.eventb.core.guard name="internal_element2" org.eventb.core.label="grd2" org.eventb.core.predicate="b ∉ dom(TRK)"/>
+<org.eventb.core.witness name="internal_wit1" org.eventb.core.label="n" org.eventb.core.predicate="n=nxt(rsrtbl(b))"/>
+<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="OCC ≔ OCC∖{b}" org.eventb.core.label="act1"/>
+<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="rsrtbl ≔ {b}⩤rsrtbl" org.eventb.core.label="act2"/>
+<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="resbl ≔ resbl∖{b}" org.eventb.core.label="act3"/>
+<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="LBT ≔ LBT∖{b}" org.eventb.core.label="act4"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element6" org.eventb.core.comment="the back of the train moves" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="BACK_MOVE_2">
+<org.eventb.core.refinesEvent name="internal_element1" org.eventb.core.target="BACK_MOVE"/>
+<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="b"/>
+<org.eventb.core.guard name="internal_element1" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT"/>
+<org.eventb.core.guard name="internal_element2" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)"/>
+<org.eventb.core.guard name="internal_element3" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∈OCC"/>
+<org.eventb.core.witness name="internal_wit1" org.eventb.core.label="n" org.eventb.core.predicate="n=nxt(rsrtbl(b))"/>
+<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="OCC ≔ OCC∖{b}" org.eventb.core.label="act1"/>
+<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="rsrtbl ≔ {b}⩤rsrtbl" org.eventb.core.label="act2"/>
+<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="resbl ≔ resbl∖{b}" org.eventb.core.label="act3"/>
+<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="LBT ≔ (LBT∖{b})∪{TRK(b)}" org.eventb.core.label="act4"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element7" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="point_positionning">
+<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="r"/>
+<org.eventb.core.guard name="internal_element1" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt∖frm"/>
+<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="TRK ≔ ((dom(nxt(r))⩤TRK)⩥ran(nxt(r))) ∪ nxt(r)" org.eventb.core.label="act1"/>
+</org.eventb.core.event>
+<org.eventb.core.invariant name="internal_element1I" org.eventb.core.comment="TRK is a partial injection between blocks" org.eventb.core.label="inv1" org.eventb.core.predicate="TRK ∈ BLOCKS ⤔ BLOCKS"/>
+<org.eventb.core.invariant name="internal_element2I" org.eventb.core.comment="formed routes are reserved routes FUN-7" org.eventb.core.label="inv2" org.eventb.core.predicate="frm ⊆ resrt"/>
+<org.eventb.core.invariant name="internal_element3I" org.eventb.core.comment="reserved routes of occupied block are formed routes" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl[OCC] ⊆ frm"/>
+<org.eventb.core.invariant name="internal_element4I" org.eventb.core.comment="for routes which are reserved but not yet formed: we resrve the full route" org.eventb.core.label="inv4" org.eventb.core.predicate="∀r· r∈resrt∖frm ⇒  rtbl▷{r} = rsrtbl▷{r}"/>
+<org.eventb.core.invariant name="internal_element5I" org.eventb.core.label="inv5" org.eventb.core.predicate="∀x,y· x↦y∈TRK ⇒ (∃r·r∈ROUTES ∧ x↦y∈nxt(r))"/>
+<org.eventb.core.invariant name="internal_element6I" org.eventb.core.comment="for each formed route the route corresponds to the physical track" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r· r∈frm ⇒ rsrtbl∼[{r}]◁nxt(r)  = rsrtbl∼[{r}]◁TRK"/>
+<org.eventb.core.invariant name="internal_element7I" org.eventb.core.comment="the last blocks of the trains are all occupied" org.eventb.core.label="inv7" org.eventb.core.predicate="LBT ⊆ OCC"/>
+<org.eventb.core.invariant name="internal_element8I" org.eventb.core.comment="all predecessors of last blocks are not reserved or reserved for another route" org.eventb.core.label="inv8" org.eventb.core.predicate="∀a,b· b∈LBT ∧ b∈ran(nxt(rsrtbl(b)))&#10;                     ∧ a=(nxt(rsrtbl(b)))∼(b)&#10;                     ∧ a∈dom(rsrtbl) ⇒ rsrtbl(a)≠rsrtbl(b)"/>
+<org.eventb.core.invariant name="internal_element1T" org.eventb.core.label="thm1" org.eventb.core.predicate="∀b·b∈OCC ∧ b∈dom(TRK) ⇒ (nxt(rsrtbl(b)))(b)=TRK(b)" org.eventb.core.theorem="true"/>
+<org.eventb.core.variable name="internal_var1" org.eventb.core.comment="set of reserved routes" org.eventb.core.identifier="resrt"/>
+<org.eventb.core.variable name="internal_var2" org.eventb.core.comment="set of reserved blocks" org.eventb.core.identifier="resbl"/>
+<org.eventb.core.variable name="internal_var3" org.eventb.core.comment="reserved route of reserved block" org.eventb.core.identifier="rsrtbl"/>
+<org.eventb.core.variable name="internal_var4" org.eventb.core.comment="occupied block" org.eventb.core.identifier="OCC"/>
+<org.eventb.core.variable name="internal_element1" org.eventb.core.comment="physical track" org.eventb.core.identifier="TRK"/>
+<org.eventb.core.variable name="internal_element2" org.eventb.core.comment="set of formed routes" org.eventb.core.identifier="frm"/>
+<org.eventb.core.variable name="internal_element3" org.eventb.core.comment="last block of the train" org.eventb.core.identifier="LBT"/>
+<org.eventb.core.event name="internal_element8J" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="route_formation">
+<org.eventb.core.parameter name="'" org.eventb.core.identifier="r"/>
+<org.eventb.core.guard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt∖frm"/>
+<org.eventb.core.guard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="rsrtbl∼[{r}]◁nxt(r) = rsrtbl∼[{r}]◁TRK"/>
+<org.eventb.core.action name="*" org.eventb.core.assignment="frm≔frm∪{r}" org.eventb.core.label="act1"/>
+</org.eventb.core.event>
+<org.eventb.core.invariant name="internal_element8K" org.eventb.core.label="thm2" org.eventb.core.predicate="ran(lst)∩(dom(TRK)∖ran(fst))=∅" org.eventb.core.theorem="true"/>
+<org.eventb.core.invariant name="internal_element8L" org.eventb.core.label="thm3" org.eventb.core.predicate="ran(fst)∩(ran(TRK)∖ran(lst))=∅" org.eventb.core.theorem="true"/>
+</org.eventb.core.machineFile>
diff --git a/Train_B_Book/train_1_beebook.bcm b/Train_B_Book/train_1_beebook.bcm
new file mode 100644
index 0000000000000000000000000000000000000000..3f07b8c0ccab018d01d01818349dfbb0d31dd18e
--- /dev/null
+++ b/Train_B_Book/train_1_beebook.bcm
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scMachineFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter">
+    <org.eventb.core.scRefinesMachine name="'" org.eventb.core.scTarget="/Train/train_1.bcm" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.refinesMachine#'"/>
+    <org.eventb.core.scSeesContext name="(" org.eventb.core.scTarget="/Train/train_ctx0_beebook.bcc" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.seesContext#_Fd9ckId1EeO2SJhJCxRCOw"/>
+    <org.eventb.core.scInternalContext name="train_ctx0">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx0_beebook">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.extendsContext#'"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm44" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx2" org.eventb.core.label="axm45" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAYdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx3" org.eventb.core.label="compute_rtbl_from_nxt" org.eventb.core.predicate="rtbl={b⦂BLOCKS,r⦂ROUTES·r∈dom(nxt)∧(b∈dom(nxt(r))∨b∈ran(nxt(r))) ∣ b ↦ r}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_tx3w0YdrEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx4" org.eventb.core.label="axm40" org.eventb.core.predicate="nxt={R1 ↦ {L ↦ A,A ↦ B,B ↦ C},R2 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ E,E ↦ F,F ↦ G},R3 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ K,K ↦ J,J ↦ N},R4 ↦ {M ↦ H,H ↦ I,I ↦ K,K ↦ F,F ↦ G},R5 ↦ {M ↦ H,H ↦ I,I ↦ J,J ↦ N},R6 ↦ {C ↦ B,B ↦ A,A ↦ L},R7 ↦ {G ↦ F,F ↦ E,E ↦ D,D ↦ B,B ↦ A,A ↦ L},R8 ↦ {N ↦ J,J ↦ K,K ↦ D,D ↦ B,B ↦ A,A ↦ L},R9 ↦ {G ↦ F,F ↦ K,K ↦ I,I ↦ H,H ↦ M},R10 ↦ {N ↦ J,J ↦ I,I ↦ H,H ↦ M}}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LA4doEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx5" org.eventb.core.label="axm41" org.eventb.core.predicate="fst={R1 ↦ L,R2 ↦ L,R3 ↦ L,R4 ↦ M,R5 ↦ M,R6 ↦ C,R7 ↦ G,R8 ↦ N,R9 ↦ G,R10 ↦ N}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LBIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx6" org.eventb.core.label="axm42" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ G,R3 ↦ N,R4 ↦ G,R5 ↦ N,R6 ↦ L,R7 ↦ L,R8 ↦ L,R9 ↦ M,R10 ↦ M}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5yEIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="A" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwIdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="B" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwYdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="C" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwodoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="D" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uw4doEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="E" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uxIdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="F" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uxYdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="G" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="H" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="I" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0odoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="J" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V04doEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="K" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V1IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="L" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V1YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="M" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="N" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="R10" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j9YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R1" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384odoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R2" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3844doEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R3" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj385IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R4" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj385YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R5" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R6" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R7" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8odoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R8" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j84doEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R9" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j9IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInvariant name="train_ctx1" org.eventb.core.label="inv1" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx2" org.eventb.core.label="inv2" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx3" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx4" org.eventb.core.label="inv5" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx5" org.eventb.core.label="inv4" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx6" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx7" org.eventb.core.label="inv7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx8" org.eventb.core.label="inv8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx9" org.eventb.core.label="inv1" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx:" org.eventb.core.label="inv2" org.eventb.core.predicate="frm⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx;" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx=" org.eventb.core.label="inv4" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx&gt;" org.eventb.core.label="inv5" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx?" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx@" org.eventb.core.label="inv7" org.eventb.core.predicate="LBT⊆OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxA" org.eventb.core.label="inv8" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxB" org.eventb.core.label="thm1" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxC" org.eventb.core.label="thm2" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxD" org.eventb.core.label="thm3" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scVariable name="resrt" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.variable#internal_var1" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="OCC" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.variable#internal_var4" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="resbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.variable#internal_var2" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="frm" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.variable#internal_element2" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="TRK" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.variable#internal_element1" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+    <org.eventb.core.scVariable name="LBT" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.variable#internal_element3" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="rsrtbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.variable#internal_var3" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+    <org.eventb.core.scEvent name="train_ctx0_beebool" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.event#internal_element4">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxE" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.event#internal_element4"/>
+        <org.eventb.core.scAction name="(" org.eventb.core.assignment="resrt ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act1"/>
+        <org.eventb.core.scAction name=")" org.eventb.core.assignment="resbl ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act2"/>
+        <org.eventb.core.scAction name="*" org.eventb.core.assignment="rsrtbl ≔ ∅ ⦂ ℙ(BLOCKS×ROUTES)" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act3"/>
+        <org.eventb.core.scAction name="+" org.eventb.core.assignment="OCC ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act4"/>
+        <org.eventb.core.scAction name="," org.eventb.core.assignment="TRK ≔ ∅ ⦂ ℙ(BLOCKS×BLOCKS)" org.eventb.core.label="act5" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="-" org.eventb.core.assignment="frm ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act6" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="." org.eventb.core.assignment="LBT ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act7" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element3"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_beeboom" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.event#internal_element5">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxF" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.event#internal_element5|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="rsrtbl ≔ rsrtbl∪(rtbl ▷ {r})" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="u" org.eventb.core.assignment="resbl ≔ resbl∪rtbl∼[{r}]" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_beeboon" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.event#internal_element6">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxG" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.event#internal_element6|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt ∖ {r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="frm ≔ frm ∖ {r}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_beebooo" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_1" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.event#internal_element7">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxH" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.event#internal_element7|org.eventb.core.refinesEvent#_Fd-qsId1EeO2SJhJCxRCOw"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStMYdPEeOSfLkA9HaR6w" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="fst(r)∈resbl ∖ OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStModPEeOSfLkA9HaR6w" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="rsrtbl(fst(r))=r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdTUQIdPEeOSfLkA9HaR6w" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="OCC ≔ OCC∪{fst(r)}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.action#_QdTUQYdPEeOSfLkA9HaR6w"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="LBT ≔ LBT∪{fst(r)}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.parameter#_QdStMIdPEeOSfLkA9HaR6w" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_beeboop" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_2" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.event#internal_element8">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxI" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.event#internal_element8|org.eventb.core.refinesEvent#_Fd_RwId1EeO2SJhJCxRCOw"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC∪{TRK(b)}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_beebooq" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_1" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.event#internal_element9">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxJ" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.event#internal_element9|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∉dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="f" org.eventb.core.assignment="LBT ≔ LBT ∖ {b}" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_beeboor" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_2" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.event#internal_element:">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxK" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.event#internal_element:|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="f" org.eventb.core.assignment="LBT ≔ (LBT ∖ {b})∪{TRK(b)}" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_beeboos" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="point_positionning" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.event#internal_element;">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxL" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.event#internal_element;|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="TRK ≔ (dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_beeboot" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_formation" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.event#internal_element=">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxM" org.eventb.core.source="/Train/train_1_beebook.bum|org.eventb.core.machineFile#train_1_beebook|org.eventb.core.event#internal_element=|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#(" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#)" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="frm ≔ frm∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.action#*"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.parameter#'" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+</org.eventb.core.scMachineFile>
diff --git a/Train_B_Book/train_1_beebook.bpo b/Train_B_Book/train_1_beebook.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..f563a2654b78eee8d70ad7052463593a96e43df6
--- /dev/null
+++ b/Train_B_Book/train_1_beebook.bpo
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTET" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEU" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEV" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEW" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEX" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEY" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEZ" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="ROUTE[" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+        <org.eventb.core.poPredicate name="ROUTE\" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poPredicate name="ROUTE]" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poPredicate name="ROUTE^" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poPredicate name="ROUTE_" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poPredicate name="ROUTE`" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+        <org.eventb.core.poIdentifier name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="J" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="K" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="L" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="M" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="N" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="R10" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R2" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R3" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R4" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R5" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R6" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R7" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R8" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R9" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poPredicate name="ROUTEa" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEb" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAYdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEc" org.eventb.core.predicate="rtbl={b⦂BLOCKS,r⦂ROUTES·r∈dom(nxt)∧(b∈dom(nxt(r))∨b∈ran(nxt(r))) ∣ b ↦ r}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_tx3w0YdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poPredicate name="ROUTEd" org.eventb.core.predicate="nxt={R1 ↦ {L ↦ A,A ↦ B,B ↦ C},R2 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ E,E ↦ F,F ↦ G},R3 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ K,K ↦ J,J ↦ N},R4 ↦ {M ↦ H,H ↦ I,I ↦ K,K ↦ F,F ↦ G},R5 ↦ {M ↦ H,H ↦ I,I ↦ J,J ↦ N},R6 ↦ {C ↦ B,B ↦ A,A ↦ L},R7 ↦ {G ↦ F,F ↦ E,E ↦ D,D ↦ B,B ↦ A,A ↦ L},R8 ↦ {N ↦ J,J ↦ K,K ↦ D,D ↦ B,B ↦ A,A ↦ L},R9 ↦ {G ↦ F,F ↦ K,K ↦ I,I ↦ H,H ↦ M},R10 ↦ {N ↦ J,J ↦ I,I ↦ H,H ↦ M}}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LA4doEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEe" org.eventb.core.predicate="fst={R1 ↦ L,R2 ↦ L,R3 ↦ L,R4 ↦ M,R5 ↦ M,R6 ↦ C,R7 ↦ G,R8 ↦ N,R9 ↦ G,R10 ↦ N}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LBIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEf" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ G,R3 ↦ N,R4 ↦ G,R5 ↦ N,R6 ↦ L,R7 ↦ L,R8 ↦ L,R9 ↦ M,R10 ↦ M}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5yEIdoEeOcUOZ5WAG6MA"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/Train/train_1_beebook.bpo|org.eventb.core.poFile#train_1_beebook|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poPredicate name="rsrtbm" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I"/>
+        <org.eventb.core.poPredicate name="rsrtbn" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I"/>
+        <org.eventb.core.poPredicate name="rsrtbo" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I"/>
+        <org.eventb.core.poPredicate name="rsrtbp" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I"/>
+        <org.eventb.core.poPredicate name="rsrtbq" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poPredicate name="rsrtbr" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtbs" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtbt" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtbu" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtbv" org.eventb.core.predicate="frm⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtbw" org.eventb.core.predicate="rsrtbl[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtbx" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poPredicate name="rsrtby" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I"/>
+        <org.eventb.core.poPredicate name="rsrtbz" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poPredicate name="rsrtb{" org.eventb.core.predicate="LBT⊆OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I"/>
+        <org.eventb.core.poPredicate name="rsrtb|" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poPredicate name="rsrtb}" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T"/>
+        <org.eventb.core.poPredicate name="rsrtb~" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K"/>
+        <org.eventb.core.poPredicate name="rsrtc'" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_beebool" org.eventb.core.parentSet="/Train/train_1_beebook.bpo|org.eventb.core.poFile#train_1_beebook|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="TRK'" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_beebool" org.eventb.core.parentSet="/Train/train_1_beebook.bpo|org.eventb.core.poFile#train_1_beebook|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_beebool" org.eventb.core.poStamp="0"/>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_beeboom" org.eventb.core.parentSet="/Train/train_1_beebook.bpo|org.eventb.core.poFile#train_1_beebook|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_beeboom" org.eventb.core.parentSet="/Train/train_1_beebook.bpo|org.eventb.core.poFile#train_1_beebook|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_beeboom" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_beeboon" org.eventb.core.parentSet="/Train/train_1_beebook.bpo|org.eventb.core.poFile#train_1_beebook|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_beeboon" org.eventb.core.parentSet="/Train/train_1_beebook.bpo|org.eventb.core.poFile#train_1_beebook|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_beeboon" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_beebooo" org.eventb.core.parentSet="/Train/train_1_beebook.bpo|org.eventb.core.poFile#train_1_beebook|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_beebooo" org.eventb.core.parentSet="/Train/train_1_beebook.bpo|org.eventb.core.poFile#train_1_beebook|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_beebooo" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStMYdPEeOSfLkA9HaR6w"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="fst(r)∈resbl ∖ OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStModPEeOSfLkA9HaR6w"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="rsrtbl(fst(r))=r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdTUQIdPEeOSfLkA9HaR6w"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_beeboop" org.eventb.core.parentSet="/Train/train_1_beebook.bpo|org.eventb.core.poFile#train_1_beebook|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_beeboop" org.eventb.core.parentSet="/Train/train_1_beebook.bpo|org.eventb.core.poFile#train_1_beebook|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_beeboop" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_beebooq" org.eventb.core.parentSet="/Train/train_1_beebook.bpo|org.eventb.core.poFile#train_1_beebook|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_beebooq" org.eventb.core.parentSet="/Train/train_1_beebook.bpo|org.eventb.core.poFile#train_1_beebook|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_beebooq" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∉dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_beeboor" org.eventb.core.parentSet="/Train/train_1_beebook.bpo|org.eventb.core.poFile#train_1_beebook|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_beeboor" org.eventb.core.parentSet="/Train/train_1_beebook.bpo|org.eventb.core.poFile#train_1_beebook|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_beeboor" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="TRK(b)∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_beeboos" org.eventb.core.parentSet="/Train/train_1_beebook.bpo|org.eventb.core.poFile#train_1_beebook|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="TRK'" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_beeboos" org.eventb.core.parentSet="/Train/train_1_beebook.bpo|org.eventb.core.poFile#train_1_beebook|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_beeboos" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_beeboot" org.eventb.core.parentSet="/Train/train_1_beebook.bpo|org.eventb.core.poFile#train_1_beebook|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_beeboot" org.eventb.core.parentSet="/Train/train_1_beebook.bpo|org.eventb.core.poFile#train_1_beebook|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_beeboot" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#("/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_1_beebook.bpo|org.eventb.core.poFile#train_1_beebook|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0"/>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_1_beebook.bpr b/Train_B_Book/train_1_beebook.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..d13ec2a20267852024def0758a1effc175861a98
--- /dev/null
+++ b/Train_B_Book/train_1_beebook.bpr
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.prFile version="1"/>
\ No newline at end of file
diff --git a/Train_B_Book/train_1_beebook.bps b/Train_B_Book/train_1_beebook.bps
new file mode 100644
index 0000000000000000000000000000000000000000..ced513e210f482c3c7cafb26e5e709e8b27ac922
--- /dev/null
+++ b/Train_B_Book/train_1_beebook.bps
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.psFile/>
\ No newline at end of file
diff --git a/Train_B_Book/train_1_beebook.bum b/Train_B_Book/train_1_beebook.bum
new file mode 100644
index 0000000000000000000000000000000000000000..d172ec5e350ce71e0fe7bd14f1e5ef2f9519c942
--- /dev/null
+++ b/Train_B_Book/train_1_beebook.bum
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.machineFile org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter" org.eventb.texttools.text_lastmodified="1390842269670" org.eventb.texttools.text_representation="machine train_1_beebook refines train_1  sees train_ctx0_beebook&#10;&#10;variables resrt // set of reserved routes&#10;          resbl // set of reserved blocks&#10;          rsrtbl // reserved route of reserved block&#10;          OCC // occupied block&#10;          TRK // physical track&#10;          frm // set of formed routes&#10;          LBT // last block of the train&#10;&#10;&#10;events&#10;  event INITIALISATION extends INITIALISATION&#10;  end&#10;&#10;  event route_reservation extends route_reservation&#10;  end&#10;&#10;  event route_freeing extends route_freeing&#10;  end&#10;&#10;  event FRONT_MOVE_1 // the train enters its route&#10;  extends FRONT_MOVE_1&#10;  end&#10;&#10;  event FRONT_MOVE_2 // the front of the train moves&#10;  extends FRONT_MOVE_2&#10;  end&#10;&#10;  event BACK_MOVE_1 // the train leaves its route&#10;  extends BACK_MOVE_1&#10;  end&#10;&#10;  event BACK_MOVE_2 // the back of the train moves&#10;  extends BACK_MOVE_2&#10;  end&#10;&#10;  event point_positionning extends point_positionning&#10;  end&#10;&#10;  event route_formation extends route_formation&#10;  end&#10;end&#10;" version="5">
+<org.eventb.core.refinesMachine name="'" org.eventb.core.target="train_1"/>
+<org.eventb.core.seesContext name="_Fd9ckId1EeO2SJhJCxRCOw" org.eventb.core.target="train_ctx0_beebook"/>
+<org.eventb.core.variable name="internal_var1" org.eventb.core.comment="set of reserved routes" org.eventb.core.identifier="resrt"/>
+<org.eventb.core.variable name="internal_var2" org.eventb.core.comment="set of reserved blocks" org.eventb.core.identifier="resbl"/>
+<org.eventb.core.variable name="internal_var3" org.eventb.core.comment="reserved route of reserved block" org.eventb.core.identifier="rsrtbl"/>
+<org.eventb.core.variable name="internal_var4" org.eventb.core.comment="occupied block" org.eventb.core.identifier="OCC"/>
+<org.eventb.core.variable name="internal_element1" org.eventb.core.comment="physical track" org.eventb.core.identifier="TRK"/>
+<org.eventb.core.variable name="internal_element2" org.eventb.core.comment="set of formed routes" org.eventb.core.identifier="frm"/>
+<org.eventb.core.variable name="internal_element3" org.eventb.core.comment="last block of the train" org.eventb.core.identifier="LBT"/>
+<org.eventb.core.event name="internal_element4" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION"/>
+<org.eventb.core.event name="internal_element5" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="route_reservation"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element6" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="route_freeing"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element7" org.eventb.core.comment="the train enters its route" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_1">
+<org.eventb.core.refinesEvent name="_Fd-qsId1EeO2SJhJCxRCOw" org.eventb.core.target="FRONT_MOVE_1"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element8" org.eventb.core.comment="the front of the train moves" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_2">
+<org.eventb.core.refinesEvent name="_Fd_RwId1EeO2SJhJCxRCOw" org.eventb.core.target="FRONT_MOVE_2"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element9" org.eventb.core.comment="the train leaves its route" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_1">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="BACK_MOVE_1"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element:" org.eventb.core.comment="the back of the train moves" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_2">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="BACK_MOVE_2"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element;" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="point_positionning">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="point_positionning"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element=" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_formation">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="route_formation"/>
+</org.eventb.core.event>
+</org.eventb.core.machineFile>
diff --git a/Train_B_Book/train_1_beebook.prob2project b/Train_B_Book/train_1_beebook.prob2project
new file mode 100644
index 0000000000000000000000000000000000000000..0db121d3088206169eb327ccdca263f401260c62
--- /dev/null
+++ b/Train_B_Book/train_1_beebook.prob2project
@@ -0,0 +1,52 @@
+{
+  "name": "train_1_beebook",
+  "description": "(Projekt wurde automatisch aus Datei /home/gastentwickler/Downloads/rodin/workspace/Train_v3.zip_expanded/Train/train_1_beebook.bum erstellt)",
+  "machines": [
+    {
+      "name": "train_1_beebook",
+      "description": "",
+      "location": "train_1_beebook.bum",
+      "lastUsedPreferenceName": "default",
+      "requirements": [],
+      "ltlFormulas": [],
+      "ltlPatterns": [],
+      "symbolicCheckingFormulas": [],
+      "symbolicAnimationFormulas": [],
+      "simulationItems": [],
+      "testCases": [],
+      "traces": [],
+      "modelcheckingItems": [],
+      "simulation": null,
+      "visBVisualisation": null,
+      "historyChartItems": []
+    },
+    {
+      "name": "train_4_POR",
+      "description": "",
+      "location": "train_4_POR.bum",
+      "lastUsedPreferenceName": "default",
+      "requirements": [],
+      "ltlFormulas": [],
+      "ltlPatterns": [],
+      "symbolicCheckingFormulas": [],
+      "symbolicAnimationFormulas": [],
+      "simulationItems": [],
+      "testCases": [],
+      "traces": [],
+      "modelcheckingItems": [],
+      "simulation": null,
+      "visBVisualisation": "train.json",
+      "historyChartItems": []
+    }
+  ],
+  "preferences": [],
+  "metadata": {
+    "fileType": "Project",
+    "formatVersion": 20,
+    "savedAt": "2022-02-01T11:40:09.518609Z",
+    "creator": "User",
+    "proB2KernelVersion": "4.0.0-SNAPSHOT",
+    "proBCliVersion": null,
+    "modelName": null
+  }
+}
diff --git a/Train_B_Book/train_1_prob.bcm b/Train_B_Book/train_1_prob.bcm
new file mode 100644
index 0000000000000000000000000000000000000000..b8d01714a2f83b87033865f12481f19b472315ea
--- /dev/null
+++ b/Train_B_Book/train_1_prob.bcm
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scMachineFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter">
+    <org.eventb.core.scRefinesMachine name="'" org.eventb.core.scTarget="/Train/train_1.bcm" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.refinesMachine#'"/>
+    <org.eventb.core.scSeesContext name="(" org.eventb.core.scTarget="/Train/train_ctx0_prob.bcc" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.seesContext#_-2uyQIdmEeOcUOZ5WAG6MA"/>
+    <org.eventb.core.scInternalContext name="train_ctx0">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx0_prob">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.extendsContext#'"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm44" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4thEYdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx2" org.eventb.core.label="axm45" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIIdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx3" org.eventb.core.label="axm14" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIYdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx4" org.eventb.core.label="axm40" org.eventb.core.predicate="nxt={R1 ↦ {A ↦ B,B ↦ C},R2 ↦ {A ↦ B,B ↦ D,D ↦ E,E ↦ F},R3 ↦ {H ↦ G,G ↦ E,E ↦ F},R4 ↦ {I ↦ G,G ↦ E,E ↦ F},R5 ↦ {C ↦ B,B ↦ A},R6 ↦ {F ↦ E,E ↦ D,D ↦ B,B ↦ A},R7 ↦ {F ↦ E,E ↦ G,G ↦ H},R8 ↦ {F ↦ E,E ↦ G,G ↦ I}}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMIdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx5" org.eventb.core.label="axm41" org.eventb.core.predicate="fst={R1 ↦ A,R2 ↦ A,R3 ↦ H,R4 ↦ I,R5 ↦ C,R6 ↦ F,R7 ↦ F,R8 ↦ F}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMYdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx6" org.eventb.core.label="axm42" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ F,R3 ↦ F,R4 ↦ F,R5 ↦ A,R6 ↦ A,R7 ↦ H,R8 ↦ I}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvModmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="A" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4qdwYdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="B" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4qdwodmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="C" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rE0IdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="D" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rE0YdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="E" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rE0odmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="F" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr4IdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="G" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr4YdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="H" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr4odmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="I" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr44dmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="R1" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4sS8IdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R2" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4sS8YdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R3" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4sS8odmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R4" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6AIdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R5" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6AYdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R6" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6AodmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R7" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6A4dmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R8" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4thEIdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInvariant name="train_ctx1" org.eventb.core.label="inv1" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx2" org.eventb.core.label="inv2" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx3" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx4" org.eventb.core.label="inv5" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx5" org.eventb.core.label="inv4" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx6" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx7" org.eventb.core.label="inv7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx8" org.eventb.core.label="inv8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx9" org.eventb.core.label="inv1" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx:" org.eventb.core.label="inv2" org.eventb.core.predicate="frm⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx;" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx=" org.eventb.core.label="inv4" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx&gt;" org.eventb.core.label="inv5" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx?" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx@" org.eventb.core.label="inv7" org.eventb.core.predicate="LBT⊆OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxA" org.eventb.core.label="inv8" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxB" org.eventb.core.label="thm1" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxC" org.eventb.core.label="thm2" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxD" org.eventb.core.label="thm3" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scVariable name="resrt" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.variable#internal_var1" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="OCC" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.variable#internal_var4" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="resbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.variable#internal_var2" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="frm" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.variable#internal_element2" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="TRK" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.variable#internal_element1" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+    <org.eventb.core.scVariable name="LBT" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.variable#internal_element3" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="rsrtbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.variable#internal_var3" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+    <org.eventb.core.scEvent name="train_ctx0_proc" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.event#internal_element4">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxE" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.event#internal_element4"/>
+        <org.eventb.core.scAction name="(" org.eventb.core.assignment="resrt ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act1"/>
+        <org.eventb.core.scAction name=")" org.eventb.core.assignment="resbl ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act2"/>
+        <org.eventb.core.scAction name="*" org.eventb.core.assignment="rsrtbl ≔ ∅ ⦂ ℙ(BLOCKS×ROUTES)" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act3"/>
+        <org.eventb.core.scAction name="+" org.eventb.core.assignment="OCC ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act4"/>
+        <org.eventb.core.scAction name="," org.eventb.core.assignment="TRK ≔ ∅ ⦂ ℙ(BLOCKS×BLOCKS)" org.eventb.core.label="act5" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="-" org.eventb.core.assignment="frm ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act6" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="." org.eventb.core.assignment="LBT ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act7" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element3"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_prod" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.event#internal_element5">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxF" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.event#internal_element5|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="rsrtbl ≔ rsrtbl∪(rtbl ▷ {r})" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="u" org.eventb.core.assignment="resbl ≔ resbl∪rtbl∼[{r}]" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_proe" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.event#internal_element6">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxG" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.event#internal_element6|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt ∖ {r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="frm ≔ frm ∖ {r}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_prof" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_1" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.event#internal_element7">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxH" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.event#internal_element7|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStMYdPEeOSfLkA9HaR6w" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="fst(r)∈resbl ∖ OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStModPEeOSfLkA9HaR6w" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="rsrtbl(fst(r))=r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdTUQIdPEeOSfLkA9HaR6w" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="OCC ≔ OCC∪{fst(r)}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.action#_QdTUQYdPEeOSfLkA9HaR6w"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="LBT ≔ LBT∪{fst(r)}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.parameter#_QdStMIdPEeOSfLkA9HaR6w" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_prog" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_2" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.event#internal_element8">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxI" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.event#internal_element8|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC∪{TRK(b)}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_proh" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_1" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.event#internal_element9">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxJ" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.event#internal_element9|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∉dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="f" org.eventb.core.assignment="LBT ≔ LBT ∖ {b}" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_proi" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_2" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.event#internal_element:">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxK" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.event#internal_element:|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="f" org.eventb.core.assignment="LBT ≔ (LBT ∖ {b})∪{TRK(b)}" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_proj" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="point_positionning" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.event#internal_element;">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxL" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.event#internal_element;|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="TRK ≔ (dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_prok" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_formation" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.event#internal_element=">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxM" org.eventb.core.source="/Train/train_1_prob.bum|org.eventb.core.machineFile#train_1_prob|org.eventb.core.event#internal_element=|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#(" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#)" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="frm ≔ frm∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.action#*"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.parameter#'" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+</org.eventb.core.scMachineFile>
diff --git a/Train_B_Book/train_1_prob.bpo b/Train_B_Book/train_1_prob.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..21b4783fae9e76d9ccc58f9836bb741ba624a418
--- /dev/null
+++ b/Train_B_Book/train_1_prob.bpo
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTET" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEU" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEV" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEW" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEX" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEY" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEZ" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="ROUTE[" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+        <org.eventb.core.poPredicate name="ROUTE\" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poPredicate name="ROUTE]" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poPredicate name="ROUTE^" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poPredicate name="ROUTE_" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poPredicate name="ROUTE`" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+        <org.eventb.core.poIdentifier name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="R1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R2" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R3" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R4" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R5" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R6" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R7" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R8" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poPredicate name="ROUTEa" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4thEYdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEb" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIIdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEc" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIYdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEd" org.eventb.core.predicate="nxt={R1 ↦ {A ↦ B,B ↦ C},R2 ↦ {A ↦ B,B ↦ D,D ↦ E,E ↦ F},R3 ↦ {H ↦ G,G ↦ E,E ↦ F},R4 ↦ {I ↦ G,G ↦ E,E ↦ F},R5 ↦ {C ↦ B,B ↦ A},R6 ↦ {F ↦ E,E ↦ D,D ↦ B,B ↦ A},R7 ↦ {F ↦ E,E ↦ G,G ↦ H},R8 ↦ {F ↦ E,E ↦ G,G ↦ I}}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMIdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEe" org.eventb.core.predicate="fst={R1 ↦ A,R2 ↦ A,R3 ↦ H,R4 ↦ I,R5 ↦ C,R6 ↦ F,R7 ↦ F,R8 ↦ F}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMYdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEf" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ F,R3 ↦ F,R4 ↦ F,R5 ↦ A,R6 ↦ A,R7 ↦ H,R8 ↦ I}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvModmEeOcUOZ5WAG6MA"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/Train/train_1_prob.bpo|org.eventb.core.poFile#train_1_prob|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poPredicate name="rsrtbm" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I"/>
+        <org.eventb.core.poPredicate name="rsrtbn" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I"/>
+        <org.eventb.core.poPredicate name="rsrtbo" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I"/>
+        <org.eventb.core.poPredicate name="rsrtbp" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I"/>
+        <org.eventb.core.poPredicate name="rsrtbq" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poPredicate name="rsrtbr" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtbs" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtbt" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtbu" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtbv" org.eventb.core.predicate="frm⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtbw" org.eventb.core.predicate="rsrtbl[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtbx" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poPredicate name="rsrtby" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I"/>
+        <org.eventb.core.poPredicate name="rsrtbz" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poPredicate name="rsrtb{" org.eventb.core.predicate="LBT⊆OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I"/>
+        <org.eventb.core.poPredicate name="rsrtb|" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poPredicate name="rsrtb}" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T"/>
+        <org.eventb.core.poPredicate name="rsrtb~" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K"/>
+        <org.eventb.core.poPredicate name="rsrtc'" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_proc" org.eventb.core.parentSet="/Train/train_1_prob.bpo|org.eventb.core.poFile#train_1_prob|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="TRK'" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_proc" org.eventb.core.parentSet="/Train/train_1_prob.bpo|org.eventb.core.poFile#train_1_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_proc" org.eventb.core.poStamp="0"/>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_prod" org.eventb.core.parentSet="/Train/train_1_prob.bpo|org.eventb.core.poFile#train_1_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_prod" org.eventb.core.parentSet="/Train/train_1_prob.bpo|org.eventb.core.poFile#train_1_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_prod" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_proe" org.eventb.core.parentSet="/Train/train_1_prob.bpo|org.eventb.core.poFile#train_1_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_proe" org.eventb.core.parentSet="/Train/train_1_prob.bpo|org.eventb.core.poFile#train_1_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_proe" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_prof" org.eventb.core.parentSet="/Train/train_1_prob.bpo|org.eventb.core.poFile#train_1_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_prof" org.eventb.core.parentSet="/Train/train_1_prob.bpo|org.eventb.core.poFile#train_1_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_prof" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStMYdPEeOSfLkA9HaR6w"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="fst(r)∈resbl ∖ OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStModPEeOSfLkA9HaR6w"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="rsrtbl(fst(r))=r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdTUQIdPEeOSfLkA9HaR6w"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_prog" org.eventb.core.parentSet="/Train/train_1_prob.bpo|org.eventb.core.poFile#train_1_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_prog" org.eventb.core.parentSet="/Train/train_1_prob.bpo|org.eventb.core.poFile#train_1_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_prog" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_proh" org.eventb.core.parentSet="/Train/train_1_prob.bpo|org.eventb.core.poFile#train_1_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_proh" org.eventb.core.parentSet="/Train/train_1_prob.bpo|org.eventb.core.poFile#train_1_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_proh" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∉dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_proi" org.eventb.core.parentSet="/Train/train_1_prob.bpo|org.eventb.core.poFile#train_1_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_proi" org.eventb.core.parentSet="/Train/train_1_prob.bpo|org.eventb.core.poFile#train_1_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_proi" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="TRK(b)∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_proj" org.eventb.core.parentSet="/Train/train_1_prob.bpo|org.eventb.core.poFile#train_1_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="TRK'" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_proj" org.eventb.core.parentSet="/Train/train_1_prob.bpo|org.eventb.core.poFile#train_1_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_proj" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_prok" org.eventb.core.parentSet="/Train/train_1_prob.bpo|org.eventb.core.poFile#train_1_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_prok" org.eventb.core.parentSet="/Train/train_1_prob.bpo|org.eventb.core.poFile#train_1_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_prok" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#("/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_1_prob.bpo|org.eventb.core.poFile#train_1_prob|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0"/>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_1_prob.bpr b/Train_B_Book/train_1_prob.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..d13ec2a20267852024def0758a1effc175861a98
--- /dev/null
+++ b/Train_B_Book/train_1_prob.bpr
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.prFile version="1"/>
\ No newline at end of file
diff --git a/Train_B_Book/train_1_prob.bps b/Train_B_Book/train_1_prob.bps
new file mode 100644
index 0000000000000000000000000000000000000000..ced513e210f482c3c7cafb26e5e709e8b27ac922
--- /dev/null
+++ b/Train_B_Book/train_1_prob.bps
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.psFile/>
\ No newline at end of file
diff --git a/Train_B_Book/train_1_prob.bum b/Train_B_Book/train_1_prob.bum
new file mode 100644
index 0000000000000000000000000000000000000000..82d7bc42c034cf8545685ea371567addc2c3bdef
--- /dev/null
+++ b/Train_B_Book/train_1_prob.bum
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.machineFile org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter" org.eventb.texttools.text_lastmodified="1390836212554" org.eventb.texttools.text_representation="machine train_1_prob refines train_1  sees train_ctx0_prob&#10;&#10;variables resrt // set of reserved routes&#10;          resbl // set of reserved blocks&#10;          rsrtbl // reserved route of reserved block&#10;          OCC // occupied block&#10;          TRK // physical track&#10;          frm // set of formed routes&#10;          LBT // last block of the train&#10;&#10;&#10;events&#10;  event INITIALISATION extends INITIALISATION&#10;  end&#10;&#10;  event route_reservation extends route_reservation&#10;  end&#10;&#10;  event route_freeing extends route_freeing&#10;  end&#10;&#10;  event FRONT_MOVE_1 // the train enters its route&#10;  extends FRONT_MOVE_1&#10;  end&#10;&#10;  event FRONT_MOVE_2 // the front of the train moves&#10;  extends FRONT_MOVE_2&#10;  end&#10;&#10;  event BACK_MOVE_1 // the train leaves its route&#10;  extends BACK_MOVE_1&#10;  end&#10;&#10;  event BACK_MOVE_2 // the back of the train moves&#10;  extends BACK_MOVE_2&#10;  end&#10;&#10;  event point_positionning extends point_positionning&#10;  end&#10;&#10;  event route_formation extends route_formation&#10;  end&#10;end&#10;" version="5">
+<org.eventb.core.refinesMachine name="'" org.eventb.core.target="train_1"/>
+<org.eventb.core.seesContext name="_-2uyQIdmEeOcUOZ5WAG6MA" org.eventb.core.target="train_ctx0_prob"/>
+<org.eventb.core.variable name="internal_var1" org.eventb.core.comment="set of reserved routes" org.eventb.core.identifier="resrt"/>
+<org.eventb.core.variable name="internal_var2" org.eventb.core.comment="set of reserved blocks" org.eventb.core.identifier="resbl"/>
+<org.eventb.core.variable name="internal_var3" org.eventb.core.comment="reserved route of reserved block" org.eventb.core.identifier="rsrtbl"/>
+<org.eventb.core.variable name="internal_var4" org.eventb.core.comment="occupied block" org.eventb.core.identifier="OCC"/>
+<org.eventb.core.variable name="internal_element1" org.eventb.core.comment="physical track" org.eventb.core.identifier="TRK"/>
+<org.eventb.core.variable name="internal_element2" org.eventb.core.comment="set of formed routes" org.eventb.core.identifier="frm"/>
+<org.eventb.core.variable name="internal_element3" org.eventb.core.comment="last block of the train" org.eventb.core.identifier="LBT"/>
+<org.eventb.core.event name="internal_element4" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION"/>
+<org.eventb.core.event name="internal_element5" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="route_reservation"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element6" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="route_freeing"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element7" org.eventb.core.comment="the train enters its route" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_1">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="FRONT_MOVE_1"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element8" org.eventb.core.comment="the front of the train moves" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_2">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="FRONT_MOVE_2"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element9" org.eventb.core.comment="the train leaves its route" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_1">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="BACK_MOVE_1"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element:" org.eventb.core.comment="the back of the train moves" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_2">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="BACK_MOVE_2"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element;" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="point_positionning">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="point_positionning"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element=" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_formation">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="route_formation"/>
+</org.eventb.core.event>
+</org.eventb.core.machineFile>
diff --git a/Train_B_Book/train_1_prob_POR.bcm b/Train_B_Book/train_1_prob_POR.bcm
new file mode 100644
index 0000000000000000000000000000000000000000..c0587715c5cc01c3754d3056c280fa79a36d7a9e
--- /dev/null
+++ b/Train_B_Book/train_1_prob_POR.bcm
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scMachineFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter">
+    <org.eventb.core.scRefinesMachine name="'" org.eventb.core.scTarget="/Train/train_1_prob.bcm" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.refinesMachine#'"/>
+    <org.eventb.core.scSeesContext name="(" org.eventb.core.scTarget="/Train/train_ctx0_prob.bcc" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.seesContext#_-2uyQIdmEeOcUOZ5WAG6MA"/>
+    <org.eventb.core.scInternalContext name="train_ctx0">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx0_prob">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.extendsContext#'"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm44" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4thEYdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx2" org.eventb.core.label="axm45" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIIdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx3" org.eventb.core.label="axm14" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIYdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx4" org.eventb.core.label="axm40" org.eventb.core.predicate="nxt={R1 ↦ {A ↦ B,B ↦ C},R2 ↦ {A ↦ B,B ↦ D,D ↦ E,E ↦ F},R3 ↦ {H ↦ G,G ↦ E,E ↦ F},R4 ↦ {I ↦ G,G ↦ E,E ↦ F},R5 ↦ {C ↦ B,B ↦ A},R6 ↦ {F ↦ E,E ↦ D,D ↦ B,B ↦ A},R7 ↦ {F ↦ E,E ↦ G,G ↦ H},R8 ↦ {F ↦ E,E ↦ G,G ↦ I}}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMIdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx5" org.eventb.core.label="axm41" org.eventb.core.predicate="fst={R1 ↦ A,R2 ↦ A,R3 ↦ H,R4 ↦ I,R5 ↦ C,R6 ↦ F,R7 ↦ F,R8 ↦ F}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMYdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx6" org.eventb.core.label="axm42" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ F,R3 ↦ F,R4 ↦ F,R5 ↦ A,R6 ↦ A,R7 ↦ H,R8 ↦ I}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvModmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="A" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4qdwYdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="B" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4qdwodmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="C" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rE0IdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="D" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rE0YdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="E" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rE0odmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="F" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr4IdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="G" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr4YdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="H" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr4odmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="I" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr44dmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="R1" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4sS8IdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R2" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4sS8YdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R3" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4sS8odmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R4" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6AIdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R5" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6AYdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R6" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6AodmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R7" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6A4dmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R8" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4thEIdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInvariant name="train_ctx1" org.eventb.core.label="inv1" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx2" org.eventb.core.label="inv2" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx3" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx4" org.eventb.core.label="inv5" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx5" org.eventb.core.label="inv4" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx6" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx7" org.eventb.core.label="inv7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx8" org.eventb.core.label="inv8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx9" org.eventb.core.label="inv1" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx:" org.eventb.core.label="inv2" org.eventb.core.predicate="frm⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx;" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx=" org.eventb.core.label="inv4" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx&gt;" org.eventb.core.label="inv5" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx?" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx@" org.eventb.core.label="inv7" org.eventb.core.predicate="LBT⊆OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxA" org.eventb.core.label="inv8" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxB" org.eventb.core.label="thm1" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxC" org.eventb.core.label="thm2" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxD" org.eventb.core.label="thm3" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scVariable name="resrt" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.variable#internal_var1" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="OCC" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.variable#internal_var4" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="resbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.variable#internal_var2" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="frm" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.variable#internal_element2" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="TRK" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.variable#internal_element1" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+    <org.eventb.core.scVariable name="LBT" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.variable#internal_element3" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="rsrtbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.variable#internal_var3" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+    <org.eventb.core.scEvent name="train_ctx0_proc" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MB">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1_prob.bcm|org.eventb.core.scMachineFile#train_1_prob|org.eventb.core.scEvent#train_ctx0_proc" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MB"/>
+        <org.eventb.core.scAction name="(" org.eventb.core.assignment="resrt ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act1"/>
+        <org.eventb.core.scAction name=")" org.eventb.core.assignment="resbl ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act2"/>
+        <org.eventb.core.scAction name="*" org.eventb.core.assignment="rsrtbl ≔ ∅ ⦂ ℙ(BLOCKS×ROUTES)" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act3"/>
+        <org.eventb.core.scAction name="+" org.eventb.core.assignment="OCC ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act4"/>
+        <org.eventb.core.scAction name="," org.eventb.core.assignment="TRK ≔ ∅ ⦂ ℙ(BLOCKS×BLOCKS)" org.eventb.core.label="act5" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="-" org.eventb.core.assignment="frm ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act6" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="." org.eventb.core.assignment="LBT ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act7" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element3"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_prod" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MC">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1_prob.bcm|org.eventb.core.scMachineFile#train_1_prob|org.eventb.core.scEvent#train_ctx0_prod" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MC|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="rsrtbl ≔ rsrtbl∪(rtbl ▷ {r})" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="u" org.eventb.core.assignment="resbl ≔ resbl∪rtbl∼[{r}]" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scGuard name="v" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MC|org.eventb.core.guard#_H1aYQZS_EeOJCawlN9VuYQ" org.eventb.core.theorem="false"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_proe" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MD">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1_prob.bcm|org.eventb.core.scMachineFile#train_1_prob|org.eventb.core.scEvent#train_ctx0_proe" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MD|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt ∖ {r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="frm ≔ frm ∖ {r}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_prof" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_1" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6ME">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1_prob.bcm|org.eventb.core.scMachineFile#train_1_prob|org.eventb.core.scEvent#train_ctx0_prof" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6ME|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStMYdPEeOSfLkA9HaR6w" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="fst(r)∈resbl ∖ OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStModPEeOSfLkA9HaR6w" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="rsrtbl(fst(r))=r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdTUQIdPEeOSfLkA9HaR6w" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="OCC ≔ OCC∪{fst(r)}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.action#_QdTUQYdPEeOSfLkA9HaR6w"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="LBT ≔ LBT∪{fst(r)}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.parameter#_QdStMIdPEeOSfLkA9HaR6w" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scGuard name="u" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6ME|org.eventb.core.guard#_H1a_UJS_EeOJCawlN9VuYQ" org.eventb.core.theorem="false"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_prog" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_2" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MF">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1_prob.bcm|org.eventb.core.scMachineFile#train_1_prob|org.eventb.core.scEvent#train_ctx0_prog" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MF|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC∪{TRK(b)}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scGuard name="d" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MF|org.eventb.core.guard#_H1bmYJS_EeOJCawlN9VuYQ" org.eventb.core.theorem="false"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_proh" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_1" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MG">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1_prob.bcm|org.eventb.core.scMachineFile#train_1_prob|org.eventb.core.scEvent#train_ctx0_proh" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MG|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∉dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="f" org.eventb.core.assignment="LBT ≔ LBT ∖ {b}" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scGuard name="g" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MG|org.eventb.core.guard#_H1cNcJS_EeOJCawlN9VuYQ" org.eventb.core.theorem="false"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_proi" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_2" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MH">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1_prob.bcm|org.eventb.core.scMachineFile#train_1_prob|org.eventb.core.scEvent#train_ctx0_proi" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MH|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="f" org.eventb.core.assignment="LBT ≔ (LBT ∖ {b})∪{TRK(b)}" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scGuard name="g" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MH|org.eventb.core.guard#_H1c0gJS_EeOJCawlN9VuYQ" org.eventb.core.theorem="false"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_proj" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="point_positionning" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MI">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1_prob.bcm|org.eventb.core.scMachineFile#train_1_prob|org.eventb.core.scEvent#train_ctx0_proj" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MI|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="TRK ≔ (dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scGuard name="t" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MI|org.eventb.core.guard#_H1c0gZS_EeOJCawlN9VuYQ" org.eventb.core.theorem="false"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_prok" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_formation" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MJ">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1_prob.bcm|org.eventb.core.scMachineFile#train_1_prob|org.eventb.core.scEvent#train_ctx0_prok" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MJ|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#(" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#)" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="frm ≔ frm∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.action#*"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.parameter#'" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scGuard name="t" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MJ|org.eventb.core.guard#_H1dbkJS_EeOJCawlN9VuYQ" org.eventb.core.theorem="false"/>
+    </org.eventb.core.scEvent>
+</org.eventb.core.scMachineFile>
diff --git a/Train_B_Book/train_1_prob_POR.bpo b/Train_B_Book/train_1_prob_POR.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..49ff07c389ae13d54878aed6401e972173f2117c
--- /dev/null
+++ b/Train_B_Book/train_1_prob_POR.bpo
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTET" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEU" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEV" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEW" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEX" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEY" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEZ" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="ROUTE[" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+        <org.eventb.core.poPredicate name="ROUTE\" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poPredicate name="ROUTE]" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poPredicate name="ROUTE^" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poPredicate name="ROUTE_" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poPredicate name="ROUTE`" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+        <org.eventb.core.poIdentifier name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="R1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R2" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R3" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R4" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R5" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R6" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R7" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R8" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poPredicate name="ROUTEa" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4thEYdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEb" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIIdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEc" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIYdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEd" org.eventb.core.predicate="nxt={R1 ↦ {A ↦ B,B ↦ C},R2 ↦ {A ↦ B,B ↦ D,D ↦ E,E ↦ F},R3 ↦ {H ↦ G,G ↦ E,E ↦ F},R4 ↦ {I ↦ G,G ↦ E,E ↦ F},R5 ↦ {C ↦ B,B ↦ A},R6 ↦ {F ↦ E,E ↦ D,D ↦ B,B ↦ A},R7 ↦ {F ↦ E,E ↦ G,G ↦ H},R8 ↦ {F ↦ E,E ↦ G,G ↦ I}}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMIdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEe" org.eventb.core.predicate="fst={R1 ↦ A,R2 ↦ A,R3 ↦ H,R4 ↦ I,R5 ↦ C,R6 ↦ F,R7 ↦ F,R8 ↦ F}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMYdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEf" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ F,R3 ↦ F,R4 ↦ F,R5 ↦ A,R6 ↦ A,R7 ↦ H,R8 ↦ I}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvModmEeOcUOZ5WAG6MA"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/Train/train_1_prob_POR.bpo|org.eventb.core.poFile#train_1_prob_POR|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poPredicate name="rsrtbm" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I"/>
+        <org.eventb.core.poPredicate name="rsrtbn" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I"/>
+        <org.eventb.core.poPredicate name="rsrtbo" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I"/>
+        <org.eventb.core.poPredicate name="rsrtbp" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I"/>
+        <org.eventb.core.poPredicate name="rsrtbq" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poPredicate name="rsrtbr" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtbs" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtbt" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtbu" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtbv" org.eventb.core.predicate="frm⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtbw" org.eventb.core.predicate="rsrtbl[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtbx" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poPredicate name="rsrtby" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I"/>
+        <org.eventb.core.poPredicate name="rsrtbz" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poPredicate name="rsrtb{" org.eventb.core.predicate="LBT⊆OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I"/>
+        <org.eventb.core.poPredicate name="rsrtb|" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poPredicate name="rsrtb}" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T"/>
+        <org.eventb.core.poPredicate name="rsrtb~" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K"/>
+        <org.eventb.core.poPredicate name="rsrtc'" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_proc" org.eventb.core.parentSet="/Train/train_1_prob_POR.bpo|org.eventb.core.poFile#train_1_prob_POR|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="TRK'" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_proc" org.eventb.core.parentSet="/Train/train_1_prob_POR.bpo|org.eventb.core.poFile#train_1_prob_POR|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_proc" org.eventb.core.poStamp="0"/>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_prod" org.eventb.core.parentSet="/Train/train_1_prob_POR.bpo|org.eventb.core.poFile#train_1_prob_POR|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_prod" org.eventb.core.parentSet="/Train/train_1_prob_POR.bpo|org.eventb.core.poFile#train_1_prob_POR|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_prod" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MC|org.eventb.core.guard#_H1aYQZS_EeOJCawlN9VuYQ"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_proe" org.eventb.core.parentSet="/Train/train_1_prob_POR.bpo|org.eventb.core.poFile#train_1_prob_POR|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_proe" org.eventb.core.parentSet="/Train/train_1_prob_POR.bpo|org.eventb.core.poFile#train_1_prob_POR|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_proe" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_prof" org.eventb.core.parentSet="/Train/train_1_prob_POR.bpo|org.eventb.core.poFile#train_1_prob_POR|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_prof" org.eventb.core.parentSet="/Train/train_1_prob_POR.bpo|org.eventb.core.poFile#train_1_prob_POR|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_prof" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStMYdPEeOSfLkA9HaR6w"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="fst(r)∈resbl ∖ OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStModPEeOSfLkA9HaR6w"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="rsrtbl(fst(r))=r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdTUQIdPEeOSfLkA9HaR6w"/>
+        <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6ME|org.eventb.core.guard#_H1a_UJS_EeOJCawlN9VuYQ"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_prog" org.eventb.core.parentSet="/Train/train_1_prob_POR.bpo|org.eventb.core.poFile#train_1_prob_POR|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_prog" org.eventb.core.parentSet="/Train/train_1_prob_POR.bpo|org.eventb.core.poFile#train_1_prob_POR|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_prog" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MF|org.eventb.core.guard#_H1bmYJS_EeOJCawlN9VuYQ"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_proh" org.eventb.core.parentSet="/Train/train_1_prob_POR.bpo|org.eventb.core.poFile#train_1_prob_POR|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_proh" org.eventb.core.parentSet="/Train/train_1_prob_POR.bpo|org.eventb.core.poFile#train_1_prob_POR|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_proh" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∉dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MG|org.eventb.core.guard#_H1cNcJS_EeOJCawlN9VuYQ"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_proi" org.eventb.core.parentSet="/Train/train_1_prob_POR.bpo|org.eventb.core.poFile#train_1_prob_POR|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_proi" org.eventb.core.parentSet="/Train/train_1_prob_POR.bpo|org.eventb.core.poFile#train_1_prob_POR|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_proi" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="TRK(b)∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MH|org.eventb.core.guard#_H1c0gJS_EeOJCawlN9VuYQ"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_proj" org.eventb.core.parentSet="/Train/train_1_prob_POR.bpo|org.eventb.core.poFile#train_1_prob_POR|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="TRK'" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_proj" org.eventb.core.parentSet="/Train/train_1_prob_POR.bpo|org.eventb.core.poFile#train_1_prob_POR|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_proj" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MI|org.eventb.core.guard#_H1c0gZS_EeOJCawlN9VuYQ"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_prok" org.eventb.core.parentSet="/Train/train_1_prob_POR.bpo|org.eventb.core.poFile#train_1_prob_POR|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_prok" org.eventb.core.parentSet="/Train/train_1_prob_POR.bpo|org.eventb.core.poFile#train_1_prob_POR|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_prok" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#("/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#)"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_1_prob_POR.bum|org.eventb.core.machineFile#train_1_prob_POR|org.eventb.core.event#_-2uyQIdmEeOcUOZ5WAG6MJ|org.eventb.core.guard#_H1dbkJS_EeOJCawlN9VuYQ"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_1_prob_POR.bpo|org.eventb.core.poFile#train_1_prob_POR|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0"/>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_1_prob_POR.bpr b/Train_B_Book/train_1_prob_POR.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..d13ec2a20267852024def0758a1effc175861a98
--- /dev/null
+++ b/Train_B_Book/train_1_prob_POR.bpr
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.prFile version="1"/>
\ No newline at end of file
diff --git a/Train_B_Book/train_1_prob_POR.bps b/Train_B_Book/train_1_prob_POR.bps
new file mode 100644
index 0000000000000000000000000000000000000000..ced513e210f482c3c7cafb26e5e709e8b27ac922
--- /dev/null
+++ b/Train_B_Book/train_1_prob_POR.bps
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.psFile/>
\ No newline at end of file
diff --git a/Train_B_Book/train_1_prob_POR.bum b/Train_B_Book/train_1_prob_POR.bum
new file mode 100644
index 0000000000000000000000000000000000000000..3928b5d5d184cf8c1175a083f33ca998468f9ed2
--- /dev/null
+++ b/Train_B_Book/train_1_prob_POR.bum
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.machineFile org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter" org.eventb.texttools.text_lastmodified="1392303433501" org.eventb.texttools.text_representation="machine train_1_prob_POR refines train_1_prob  sees train_ctx0_prob&#10;&#10;variables resrt // set of reserved routes&#10;          resbl // set of reserved blocks&#10;          rsrtbl // reserved route of reserved block&#10;          OCC // occupied block&#10;          TRK // physical track&#10;          frm // set of formed routes&#10;          LBT // last block of the train&#10;&#10;&#10;events&#10;  event INITIALISATION extends INITIALISATION&#10;  end&#10;&#10;  event route_reservation extends route_reservation&#10;   when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅&#10;  end&#10;&#10;  event route_freeing extends route_freeing&#10;  end&#10;&#10;  event FRONT_MOVE_1 // the train enters its route&#10;  extends FRONT_MOVE_1&#10;   when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅&#10;  end&#10;&#10;  event FRONT_MOVE_2 // the front of the train moves&#10;  extends FRONT_MOVE_2&#10;   when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅&#10;  end&#10;&#10;  event BACK_MOVE_1 // the train leaves its route&#10;  extends BACK_MOVE_1&#10;   when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅&#10;  end&#10;&#10;  event BACK_MOVE_2 // the back of the train moves&#10;  extends BACK_MOVE_2&#10;   when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅&#10;  end&#10;&#10;  event point_positionning extends point_positionning&#10;   when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅&#10;  end&#10;&#10;  event route_formation extends route_formation&#10;   when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅&#10;  end&#10;end&#10;" version="5">
+<org.eventb.core.refinesMachine name="'" org.eventb.core.target="train_1_prob"/>
+<org.eventb.core.seesContext name="_-2uyQIdmEeOcUOZ5WAG6MA" org.eventb.core.target="train_ctx0_prob"/>
+<org.eventb.core.variable name="internal_var1" org.eventb.core.comment="set of reserved routes" org.eventb.core.identifier="resrt"/>
+<org.eventb.core.variable name="internal_var2" org.eventb.core.comment="set of reserved blocks" org.eventb.core.identifier="resbl"/>
+<org.eventb.core.variable name="internal_var3" org.eventb.core.comment="reserved route of reserved block" org.eventb.core.identifier="rsrtbl"/>
+<org.eventb.core.variable name="internal_var4" org.eventb.core.comment="occupied block" org.eventb.core.identifier="OCC"/>
+<org.eventb.core.variable name="internal_element1" org.eventb.core.comment="physical track" org.eventb.core.identifier="TRK"/>
+<org.eventb.core.variable name="internal_element2" org.eventb.core.comment="set of formed routes" org.eventb.core.identifier="frm"/>
+<org.eventb.core.variable name="internal_element3" org.eventb.core.comment="last block of the train" org.eventb.core.identifier="LBT"/>
+<org.eventb.core.event name="_-2uyQIdmEeOcUOZ5WAG6MB" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION"/>
+<org.eventb.core.event name="_-2uyQIdmEeOcUOZ5WAG6MC" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="route_reservation"/>
+<org.eventb.core.guard name="_H1aYQZS_EeOJCawlN9VuYQ" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt∖ran(rsrtbl) = ∅"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="_-2uyQIdmEeOcUOZ5WAG6MD" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="route_freeing"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="_-2uyQIdmEeOcUOZ5WAG6ME" org.eventb.core.comment="the train enters its route" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_1">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="FRONT_MOVE_1"/>
+<org.eventb.core.guard name="_H1a_UJS_EeOJCawlN9VuYQ" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt∖ran(rsrtbl) = ∅"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="_-2uyQIdmEeOcUOZ5WAG6MF" org.eventb.core.comment="the front of the train moves" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_2">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="FRONT_MOVE_2"/>
+<org.eventb.core.guard name="_H1bmYJS_EeOJCawlN9VuYQ" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt∖ran(rsrtbl) = ∅"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="_-2uyQIdmEeOcUOZ5WAG6MG" org.eventb.core.comment="the train leaves its route" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_1">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="BACK_MOVE_1"/>
+<org.eventb.core.guard name="_H1cNcJS_EeOJCawlN9VuYQ" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt∖ran(rsrtbl) = ∅"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="_-2uyQIdmEeOcUOZ5WAG6MH" org.eventb.core.comment="the back of the train moves" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_2">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="BACK_MOVE_2"/>
+<org.eventb.core.guard name="_H1c0gJS_EeOJCawlN9VuYQ" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt∖ran(rsrtbl) = ∅"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="_-2uyQIdmEeOcUOZ5WAG6MI" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="point_positionning">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="point_positionning"/>
+<org.eventb.core.guard name="_H1c0gZS_EeOJCawlN9VuYQ" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt∖ran(rsrtbl) = ∅"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="_-2uyQIdmEeOcUOZ5WAG6MJ" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_formation">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="route_formation"/>
+<org.eventb.core.guard name="_H1dbkJS_EeOJCawlN9VuYQ" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt∖ran(rsrtbl) = ∅"/>
+</org.eventb.core.event>
+</org.eventb.core.machineFile>
diff --git a/Train_B_Book/train_2.bcm b/Train_B_Book/train_2.bcm
new file mode 100644
index 0000000000000000000000000000000000000000..4a46607633894046c0a522abeb169e83e467c80f
--- /dev/null
+++ b/Train_B_Book/train_2.bcm
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scMachineFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter">
+    <org.eventb.core.scRefinesMachine name="'" org.eventb.core.scTarget="/Train/train_1.bcm" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.refinesMachine#internal_refinesMachine1"/>
+    <org.eventb.core.scSeesContext name="(" org.eventb.core.scTarget="/Train/train_ctx0.bcc" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.seesContext#internal_sees1"/>
+    <org.eventb.core.scInternalContext name="train_ctx0">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInvariant name="train_ctx1" org.eventb.core.label="inv1" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx2" org.eventb.core.label="inv2" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx3" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx4" org.eventb.core.label="inv5" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx5" org.eventb.core.label="inv4" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx6" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx7" org.eventb.core.label="inv7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx8" org.eventb.core.label="inv8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx9" org.eventb.core.label="inv1" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx:" org.eventb.core.label="inv2" org.eventb.core.predicate="frm⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx;" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx=" org.eventb.core.label="inv4" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx&gt;" org.eventb.core.label="inv5" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx?" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx@" org.eventb.core.label="inv7" org.eventb.core.predicate="LBT⊆OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxA" org.eventb.core.label="inv8" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxB" org.eventb.core.label="thm1" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxC" org.eventb.core.label="thm2" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxD" org.eventb.core.label="thm3" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxE" org.eventb.core.label="inv4" org.eventb.core.predicate="rdy⊆frm" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_refinesMachine3" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxF" org.eventb.core.label="inv2" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxG" org.eventb.core.label="inv3" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scVariable name="rdy" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.variable#internal_element4" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="resrt" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.variable#internal_var1" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="OCC" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.variable#internal_var4" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="resbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.variable#internal_var2" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="frm" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.variable#internal_element2" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="TRK" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.variable#internal_element1" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+    <org.eventb.core.scVariable name="LBT" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.variable#internal_element3" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="rsrtbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.variable#internal_var3" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+    <org.eventb.core.scEvent name="train_ctxH" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="INITIALISATION" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxE" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.scAction name="(" org.eventb.core.assignment="resrt ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act1"/>
+        <org.eventb.core.scAction name=")" org.eventb.core.assignment="resbl ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act2"/>
+        <org.eventb.core.scAction name="*" org.eventb.core.assignment="rsrtbl ≔ ∅ ⦂ ℙ(BLOCKS×ROUTES)" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act3"/>
+        <org.eventb.core.scAction name="+" org.eventb.core.assignment="OCC ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act4"/>
+        <org.eventb.core.scAction name="," org.eventb.core.assignment="TRK ≔ ∅ ⦂ ℙ(BLOCKS×BLOCKS)" org.eventb.core.label="act5" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="-" org.eventb.core.assignment="frm ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act6" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="." org.eventb.core.assignment="LBT ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act7" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="/" org.eventb.core.assignment="rdy ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act8" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element4"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxI" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element1">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxF" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element1|org.eventb.core.refinesEvent#internal_refinesEvent1"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="rsrtbl ≔ rsrtbl∪(rtbl ▷ {r})" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="u" org.eventb.core.assignment="resbl ≔ resbl∪rtbl∼[{r}]" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxJ" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element2">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxG" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element2|org.eventb.core.refinesEvent#internal_refinesEvent1"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt ∖ {r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="frm ≔ frm ∖ {r}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxK" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="FRONT_MOVE_1" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxH" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.refinesEvent#_y_4soYdREeO1KoWHc0_rvw"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈rdy" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="rsrtbl(fst(r))=r" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="OCC ≔ OCC∪{fst(r)}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="LBT ≔ LBT∪{fst(r)}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="u" org.eventb.core.assignment="rdy ≔ rdy ∖ {r}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element3"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxL" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_2" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element4">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxI" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element4|org.eventb.core.refinesEvent#_y_6h0IdREeO1KoWHc0_rvw"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC∪{TRK(b)}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxM" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_1" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element5">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxJ" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element5|org.eventb.core.refinesEvent#internal_refinesEvent1"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∉dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="f" org.eventb.core.assignment="LBT ≔ LBT ∖ {b}" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxN" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_2" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element6">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxK" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element6|org.eventb.core.refinesEvent#internal_refinesEvent1"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="f" org.eventb.core.assignment="LBT ≔ (LBT ∖ {b})∪{TRK(b)}" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxO" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="point_positionning" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt2">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxL" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt2|org.eventb.core.refinesEvent#internal_element1"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="TRK ≔ (dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxP" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_formation" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_refinesMachine2">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_1.bcm|org.eventb.core.scMachineFile#train_1|org.eventb.core.scEvent#train_ctxM" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.refinesEvent#,"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#(" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#)" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="frm ≔ frm∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.action#*"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.parameter#'" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="rdy ≔ rdy∪{r}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.action#-"/>
+    </org.eventb.core.scEvent>
+</org.eventb.core.scMachineFile>
diff --git a/Train_B_Book/train_2.bpo b/Train_B_Book/train_2.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..fce6f2ea8bab6fabf3bbc5a4176664391001470e
--- /dev/null
+++ b/Train_B_Book/train_2.bpo
@@ -0,0 +1,313 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTET" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEU" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEV" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEW" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEX" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEY" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEZ" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="ROUTE[" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+        <org.eventb.core.poPredicate name="ROUTE\" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poPredicate name="ROUTE]" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poPredicate name="ROUTE^" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poPredicate name="ROUTE_" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poPredicate name="ROUTE`" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poPredicate name="rsrtbm" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I"/>
+        <org.eventb.core.poPredicate name="rsrtbn" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I"/>
+        <org.eventb.core.poPredicate name="rsrtbo" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I"/>
+        <org.eventb.core.poPredicate name="rsrtbp" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I"/>
+        <org.eventb.core.poPredicate name="rsrtbq" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poPredicate name="rsrtbr" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtbs" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtbt" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtbu" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtbv" org.eventb.core.predicate="frm⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtbw" org.eventb.core.predicate="rsrtbl[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtbx" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poPredicate name="rsrtby" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I"/>
+        <org.eventb.core.poPredicate name="rsrtbz" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poPredicate name="rsrtb{" org.eventb.core.predicate="LBT⊆OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I"/>
+        <org.eventb.core.poPredicate name="rsrtb|" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poPredicate name="rsrtb}" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T"/>
+        <org.eventb.core.poPredicate name="rsrtb~" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K"/>
+        <org.eventb.core.poPredicate name="rsrtc'" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="INITIALISATION/inv4/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxH"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="(∅ ⦂ ℙ(ROUTES))⊆(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_refinesMachine3"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_refinesMachine3"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poSequent#INITIALISATION\/inv4\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD0"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="INITIALISATION/inv2/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxH"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈(∅ ⦂ ℙ(ROUTES))⇒rtbl ▷ {r}=(∅ ⦂ ℙ(BLOCKS×ROUTES)) ▷ {r}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poSequent#INITIALISATION\/inv2\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD1"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="INITIALISATION/inv3/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxH"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈(∅ ⦂ ℙ(ROUTES))⇒dom(rtbl ▷ {r})∩(∅ ⦂ ℙ(BLOCKS))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poSequent#INITIALISATION\/inv3\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD2"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxH" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="TRK'" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rdy'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxH" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxH" org.eventb.core.poStamp="0"/>
+    <org.eventb.core.poSequent name="route_reservation/inv2/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxI"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈rdy⇒rtbl ▷ {r0}=(rsrtbl∪(rtbl ▷ {r})) ▷ {r0}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poSequent#route_reservation\/inv2\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD1"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxI" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxI" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxI" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="route_freeing/inv4/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxJ"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="rdy⊆frm ∖ {r}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_refinesMachine3"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_refinesMachine3"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poSequent#route_freeing\/inv4\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD0"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxJ" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxJ" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxJ" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/grd2/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Guard" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxK("/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧fst(r)∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxK("/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/inv4/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxK"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="rdy ∖ {r}⊆frm" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_refinesMachine3"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_refinesMachine3"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poSequent#FRONT_MOVE_1\/inv4\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD0"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/inv2/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxK"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈rdy ∖ {r}⇒rtbl ▷ {r0}=rsrtbl ▷ {r0}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poSequent#FRONT_MOVE_1\/inv2\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD1"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/inv3/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxK"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈rdy ∖ {r}⇒dom(rtbl ▷ {r0})∩(OCC∪{fst(r)})=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poSequent#FRONT_MOVE_1\/inv3\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD2"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/grd1/GRD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Guard strengthening (split)" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxK"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="r∈frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStMYdPEeOSfLkA9HaR6w"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStMYdPEeOSfLkA9HaR6w"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poSequent#FRONT_MOVE_1\/grd1\/GRD|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/grd2/GRD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Guard strengthening (split)" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxK"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="fst(r)∈resbl ∖ OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStModPEeOSfLkA9HaR6w"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element3|org.eventb.core.guard#_QdStModPEeOSfLkA9HaR6w"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poSequent#FRONT_MOVE_1\/grd2\/GRD|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxK" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rdy'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTHYPtrain_ctxK(" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxK" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈rdy" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxK" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxK(" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rsrtbl(fst(r))=r" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="FRONT_MOVE_2/inv3/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxL"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩(OCC∪{TRK(b)})=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element4"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poSequent#FRONT_MOVE_2\/inv3\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD2"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxL" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxL" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxL" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="BACK_MOVE_1/inv2/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxM"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}={b} ⩤ rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poSequent#BACK_MOVE_1\/inv2\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD1"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_1/inv3/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxM"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩(OCC ∖ {b})=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poSequent#BACK_MOVE_1\/inv3\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD2"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxM" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxM" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxM" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∉dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="BACK_MOVE_2/inv2/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxN"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}={b} ⩤ rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element6"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poSequent#BACK_MOVE_2\/inv2\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD1"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="BACK_MOVE_2/inv3/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxN"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩(OCC ∖ {b})=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element6"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poSequent#BACK_MOVE_2\/inv3\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD2"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxN" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxN" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxN" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="TRK(b)∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxO" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="TRK'" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxO" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxO" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="route_formation/inv4/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxP"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="rdy∪{r}⊆frm∪{r}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_refinesMachine3"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_refinesMachine2"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_refinesMachine3"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poSequent#route_formation\/inv4\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD0"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="route_formation/inv2/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxP"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈rdy∪{r}⇒rtbl ▷ {r0}=rsrtbl ▷ {r0}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_refinesMachine2"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poSequent#route_formation\/inv2\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD1"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="route_formation/inv3/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxP"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈rdy∪{r}⇒dom(rtbl ▷ {r0})∩OCC=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_refinesMachine2"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poSequent#route_formation\/inv3\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD2"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="rdy'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#("/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_2.bpo|org.eventb.core.poFile#train_2|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="rdy⊆frm" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_refinesMachine3"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I"/>
+    </org.eventb.core.poPredicateSet>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_2.bpr b/Train_B_Book/train_2.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..eab762399b991e1d5a8ea6e632254e0d1ecbf6bd
--- /dev/null
+++ b/Train_B_Book/train_2.bpr
@@ -0,0 +1,14335 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.prFile version="1">
+<org.eventb.core.prProof name="FRONT_MOVE_1/grd2/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7" org.eventb.core.prSets="B,R">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p10"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p14"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p21"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p23"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p25"/>
+<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p27"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p28"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p29"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p30"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p31"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p32"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p33"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p34"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p23"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p35"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p25"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p36"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p27"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p37"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p28"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p38"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p29"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p39"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p30"/>
+<org.eventb.core.prRule name="org.eventb.contributer.seqprover.fr1866809.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Simplify using dom of total function" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p40"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p42"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p41"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p43"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p15"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p6,p1,p8,p18,p10,p12,p44,p4,p45,p46,p20,p22,p24,p47,p48,p49,p50,p14,p51,p52,p53,p5,p3,p54,p41,p55,p9,p11,p13,p15,p19,p21,p23,p25,p28,p29,p30,p32,p33,p34,p35,p37,p38,p39,p40,p42,p43"/>
+<org.eventb.core.prRule name="org.eventb.pp.pp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Predicate Prover" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R2000"/>
+<org.eventb.core.prString name=".maxSteps" org.eventb.core.prSValue="3000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂R·r∈R⇒(∀S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="fst(r)∈resbl"/>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="rsrtbl(fst(r))=r"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂R,s⦂R·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="OCC⊆resbl"/>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂R·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀b⦂B·b∈OCC∧b∈dom(TRK)⇒(nxt(rsrtbl(b)))(b)=TRK(b)">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="fst(r)∈resbl ∖ OCC"/>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂R,S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂R·⊤⇒(∀S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂R·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂R·r∈R⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="rdy⊆frm">
+<org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(R)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈resbl⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="fst(r)∈dom(rsrtbl)"/>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂R·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}">
+<org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(R)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂R·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+<org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂R·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂R·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="rsrtbl∈B ⇸ R"/>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂R·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="fst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂R·r∈R⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂R,s⦂R·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="r∈dom(fst)"/>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="fst∈R → B"/>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="rsrtbl[OCC]⊆frm">
+<org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(R)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="LBT⊆OCC">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="fst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="resbl⊆B"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂R·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·r∈R∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂R·r∈R⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="r∈R"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="r∈rdy"/>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂R·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="point_positionning/act1/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34" org.eventb.core.prSets="B,R">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p39">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p35"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p36"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p15"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p37"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p26"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p38"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p29"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p40">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p23,p19,p28,p6,p34,p7,p18,p2,p5,p13,p16,p1,p31,p4,p9,p24,p3,p17,p8,p12,p21,p14,p20,p30,p11,p27,p10,p22,p25,p32,p35,p36,p37,p38">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:2000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p41">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.isFunGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p6"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+<org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="resbl⊆B"/>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="lst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="nxt∈R → (B ⤔ B)"/>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂R·r∈R⇒(∀S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B)))"/>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="TRK∈B ⤔ B"/>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="lst∈R → B"/>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="OCC⊆resbl"/>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="LBT⊆OCC"/>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="rdy⊆frm"/>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="frm⊆resrt"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂R·r∈R⇒¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)"/>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="nxt∈R ⇸ ℙ(B × B)"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂R·r∈R⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂R·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="resrt⊆R"/>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="fst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(rtbl)=B"/>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·r∈R∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="rtbl∈B ↔ R"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="ran(rtbl)=R"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀b⦂B·b∈OCC∧b∈dom(TRK)⇒(nxt(rsrtbl(b)))(b)=TRK(b)"/>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂R·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="r∈dom(nxt)"/>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂R·r∈R⇒fst(r)≠lst(r)"/>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="r∈resrt ∖ frm"/>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="fst∈R → B"/>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="point_positionning/TRK/EQL" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p2"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p4"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p6"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂R·r∈R⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂R·r∈R⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="R" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+</org.eventb.core.prPred>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="FRONT_MOVE_1/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11" org.eventb.core.prSets="B,R">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p9,p15,p16,p17"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p14"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p18"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p21"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p20"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p23"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p22"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p25,p9,p16,p15,p26,p17"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p24"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p28"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p27"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p30"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p29"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p32"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p31"/>
+<org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p34"/>
+<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p33"/>
+<org.eventb.core.prHypAction name="FORWARD_INF20" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p36"/>
+<org.eventb.core.prHypAction name="HIDE21" org.eventb.core.prHyps="p35"/>
+<org.eventb.core.prHypAction name="FORWARD_INF22" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p25,p26"/>
+<org.eventb.core.prHypAction name="HIDE23" org.eventb.core.prHyps="p37"/>
+<org.eventb.core.prHypAction name="FORWARD_INF24" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p39"/>
+<org.eventb.core.prHypAction name="HIDE25" org.eventb.core.prHyps="p38"/>
+<org.eventb.core.prHypAction name="FORWARD_INF26" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41"/>
+<org.eventb.core.prHypAction name="HIDE27" org.eventb.core.prHyps="p40"/>
+<org.eventb.core.prHypAction name="FORWARD_INF28" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p43"/>
+<org.eventb.core.prHypAction name="HIDE29" org.eventb.core.prHyps="p42"/>
+<org.eventb.core.prHypAction name="FORWARD_INF30" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p45"/>
+<org.eventb.core.prHypAction name="HIDE31" org.eventb.core.prHyps="p44"/>
+<org.eventb.core.prHypAction name="FORWARD_INF32" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p47"/>
+<org.eventb.core.prHypAction name="HIDE33" org.eventb.core.prHyps="p46"/>
+<org.eventb.core.prHypAction name="FORWARD_INF34" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p49,p50"/>
+<org.eventb.core.prHypAction name="HIDE35" org.eventb.core.prHyps="p48"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p51">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="R"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.impI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p52">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst r0)" org.eventb.core.prHyps="p11">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p54">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.trueGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p54" org.eventb.core.prHyps=""/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p55">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p11"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.impE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ hyp mp (r0∈rdy⇒dom(rtbl ▷ {r0})∩OCC=∅)" org.eventb.core.prHyps="p55">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p56">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p55"/>
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p6,p3,p52">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p56,p57">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p55"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoImpE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto ImpE" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p55"/>
+<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p57"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.cut" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (fst(r)∉dom(rtbl ▷ {r0}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p58">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p8">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="p8"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p9">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p9"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p8,p9">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p60">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst r0)" org.eventb.core.prHyps="p10">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p54">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.trueGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p54" org.eventb.core.prHyps=""/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p61">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p10"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoImpE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto ImpE" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p56,p61" org.eventb.core.prInfHyps="p62"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p61"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (rtbl ▷ {r0}=rsrtbl ▷ {r0})" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p62">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p64">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p63"/>
+<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p57"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p63"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p7,p2"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p4"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p5"/>
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p56,p2,p52,p3,p6,p9,p62,p1,p4,p5,p8,p7,p63">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p62"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="2" org.eventb.core.prHyps="p8,p9,p59">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p60"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p59"/>
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p56,p60,p52,p57,p3,p6,p8,p9">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p59"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="r0∈rdy">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀a⦂B,b⦂B·(b∈LBT⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧(b∈ran(nxt(rsrtbl(b)))⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B))∧(b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒a∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂R,S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="rsrtbl(fst(r))=r"/>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="r0∈rdy⇒dom(rtbl ▷ {r0})∩OCC=(∅ ⦂ ℙ(B))">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀b⦂B·b∈LBT⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧(b∈ran(nxt(rsrtbl(b)))⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="⊤"/>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="frm⊆resrt"/>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂R,S⦂ℙ(B)·S⊆B⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂R·r∈R⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂R·r∈R⇒(∀S⦂ℙ(B)·S⊆B⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∀r⦂R·r∈dom(nxt))∧nxt∈R ⇸ ℙ(B × B)">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="r∈rdy"/>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·r∈R∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="r0∈rdy⇒rtbl ▷ {r0}=rsrtbl ▷ {r0}">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="fst(r)∉dom(rtbl ▷ {r0})">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒r∈dom(fst)∧fst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)∧lst∈R ⇸ B">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒r∈dom(fst)∧fst∈R ⇸ B∧s∈dom(fst)∧s∈dom(lst)∧lst∈R ⇸ B">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="fst∈R → B"/>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬fst(r)∈dom(rtbl ▷ {r0})">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂R·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="dom(rtbl ▷ {r0})∩OCC=(∅ ⦂ ℙ(B))">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂R·r∈dom(fst)"/>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒a∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧b∈dom(rsrtbl)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="r∈dom(fst)∧fst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(fst)∧fst∈R ⇸ B∧r∈dom(lst)∧lst∈R ⇸ B">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂R·r∈R⇒(∀S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂R·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="lst∈R ⇸ B">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧r∈dom(lst)∧lst∈R ⇸ B∧r∈dom(fst)∧fst∈R ⇸ B">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="dom(rtbl ▷ {r0})∩(OCC∪{fst(r)})=(∅ ⦂ ℙ(B))">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r0⦂R·r0∈rdy ∖ {r}⇒dom(rtbl ▷ {r0})∩(OCC∪{fst(r)})=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="rdy⊆frm"/>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂R·r∈dom(lst)">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="r∈dom(fst)"/>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="nxt∈R ⇸ ℙ(B × B)">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="dom(rsrtbl ▷ {r0})∩OCC=(∅ ⦂ ℙ(B))">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="fst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="r0∈rdy ∖ {r}">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒r∈dom(lst)∧lst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)∧lst∈R ⇸ B">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="fst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="rtbl ▷ {r0}=rsrtbl ▷ {r0}">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="r0∈rdy ∖ {r}⇒dom(rtbl ▷ {r0})∩(OCC∪{fst(r)})=(∅ ⦂ ℙ(B))">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒r∈dom(lst)∧lst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬fst(r)∈dom(rsrtbl ▷ {r0})">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂R·r∈dom(nxt)">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂R·r∈R⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prExpr name="e0" org.eventb.core.expression="r0">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="R"/>
+</org.eventb.core.prExpr>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="FRONT_MOVE_1/grd2/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS,ROUTES" org.eventb.core.psManual="true">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p5"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p8"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p7"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p9"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p11"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p12"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p14"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p16"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p17"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p18"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p21"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p20"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p23"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p22"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p25"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p24"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p26"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p4"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p27"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p6"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p28"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p8"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p29"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p30"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p15"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p31"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p19"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p32"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p21"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p33"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p23"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p34"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p25"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p35"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p26"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p36"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p27"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p37"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p28"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38">
+<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p2">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39">
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
+<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p40" org.eventb.core.prHyps=""/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p41">
+<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p2"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p42"/>
+<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p43">
+<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p1"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="⊤"/>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="resrt⊆ROUTES"/>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="r∈dom(fst)"/>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧fst(r)∈dom(rsrtbl)∧rsrtbl∈BLOCKS ⇸ ROUTES"/>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="r∈ROUTES"/>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="fst(r)∈dom(rsrtbl)"/>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewrites:4"/>
+<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="BACK_MOVE_1/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35" org.eventb.core.prSets="B,R">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p36"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p34"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p38,p39,p40,p41"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p37"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p42"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p6"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p44"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p43"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p45"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p14"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p47,p38,p39,p40,p48,p41"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p46"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p49"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p17"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p51"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p50"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p52"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p28"/>
+<org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p54"/>
+<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p53"/>
+<org.eventb.core.prHypAction name="FORWARD_INF20" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p55"/>
+<org.eventb.core.prHypAction name="HIDE21" org.eventb.core.prHyps="p26"/>
+<org.eventb.core.prHypAction name="FORWARD_INF22" org.eventb.core.prHyps="p56" org.eventb.core.prInfHyps="p47,p48"/>
+<org.eventb.core.prHypAction name="HIDE23" org.eventb.core.prHyps="p56"/>
+<org.eventb.core.prHypAction name="FORWARD_INF24" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p57"/>
+<org.eventb.core.prHypAction name="HIDE25" org.eventb.core.prHyps="p3"/>
+<org.eventb.core.prHypAction name="FORWARD_INF26" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p58"/>
+<org.eventb.core.prHypAction name="HIDE27" org.eventb.core.prHyps="p19"/>
+<org.eventb.core.prHypAction name="FORWARD_INF28" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p59"/>
+<org.eventb.core.prHypAction name="HIDE29" org.eventb.core.prHyps="p22"/>
+<org.eventb.core.prHypAction name="FORWARD_INF30" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p61"/>
+<org.eventb.core.prHypAction name="HIDE31" org.eventb.core.prHyps="p60"/>
+<org.eventb.core.prHypAction name="FORWARD_INF32" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p62"/>
+<org.eventb.core.prHypAction name="HIDE33" org.eventb.core.prHyps="p31"/>
+<org.eventb.core.prHypAction name="FORWARD_INF34" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p64,p65"/>
+<org.eventb.core.prHypAction name="HIDE35" org.eventb.core.prHyps="p63"/>
+<org.eventb.core.prHypAction name="FORWARD_INF36" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p66"/>
+<org.eventb.core.prHypAction name="HIDE37" org.eventb.core.prHyps="p12"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p67">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.impI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p67" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p68">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst r)" org.eventb.core.prHyps="p25">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p70">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.trueGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p70" org.eventb.core.prHyps=""/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p71">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p25"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoImpE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto ImpE" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p68,p71" org.eventb.core.prInfHyps="p72"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p71"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p11"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p9"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.cut" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (rsrtbl(b)≠r)" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p73">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p74">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="p24,p21,p30,p5,p35,p8,p20,p2,p18,p1,p33,p4,p9,p7,p13,p23,p15,p32,p11,p29,p10,p25,p27,p16,p36,p42,p45,p49,p52,p55,p57,p58,p59,p62,p66,p68,p72">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:2000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p75">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="p24,p21,p30,p5,p35,p8,p20,p2,p18,p1,p33,p4,p9,p7,p13,p23,p15,p32,p11,p29,p10,p25,p27,p16,p36,p42,p45,p49,p52,p55,p57,p58,p59,p62,p66,p68,p72">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:2000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="p74,p75">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p77">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p10"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p13"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p33"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst rsrtbl(b))" org.eventb.core.prHyps="p3">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p73">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p74">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="p74"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p75">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="p75"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p74,p78,p75">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p3"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p79"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p78"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.cut" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (b∈rsrtbl∼[{rsrtbl(b)}])" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p73">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p74">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="p74"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p75">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="p75"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p80" org.eventb.core.prHyps="p74,p75">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p80" org.eventb.core.prHyps="p9,p74,p11,p10,p68,p13,p72,p75,p33,p66,p16,p79">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="2" org.eventb.core.prHyps="p74,p80,p75">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.contr" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ct goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p82" org.eventb.core.prHyps="p81">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.he" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he (rsrtbl(b)=r)" org.eventb.core.prHyps="p81">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p83"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p84"/>
+<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p68,p72"/>
+<org.eventb.core.prHypAction name="SELECT3" org.eventb.core.prHyps="p84,p83"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst rsrtbl(b))" org.eventb.core.prHyps="p32">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p73">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p74">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="p74"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p75">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="p75"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p74,p85,p75">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p32"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.impE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ hyp mp (rsrtbl(b)∈frm⇒rsrtbl∼[{rsrtbl(b)}] ◁ nxt(rsrtbl(b))=rsrtbl∼[{rsrtbl(b)}] ◁ TRK)" org.eventb.core.prHyps="p85">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p86">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p85"/>
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="p84,p75,p81,p9,p74,p11,p10,p13,p33,p80,p66,p16,p83,p79">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p87,p86">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p85"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst rsrtbl(b))" org.eventb.core.prHyps="p27">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p73">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoImpE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto ImpE" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p85"/>
+<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p87"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p74">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="p74"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p75">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="p75"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p74,p88,p75">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p27"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoImpE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto ImpE" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p85"/>
+<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p87"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p83,p88" org.eventb.core.prInfHyps="p89"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p88"/>
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p82" org.eventb.core.prHyps="p84,p86,p75,p81,p87,p89,p74,p9,p10,p11,p13,p33,p80,p66,p16,p83,p79">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p81"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p80"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="2" org.eventb.core.prHyps="p74,p76,p75">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p77"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p76"/>
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p9,p74,p77,p11,p68,p72,p75,p66,p16">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p76"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+<org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+<org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀a⦂B,b⦂B·(b∈LBT⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧(b∈ran(nxt(rsrtbl(b)))⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B))∧(b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒a∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R)"/>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B))"/>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="rsrtbl(b)≠r">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="rsrtbl(b)∈frm"/>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="rsrtbl(b)∈rdy⇒dom(rtbl ▷ {rsrtbl(b)})∩OCC=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="rtbl ▷ {r}=rsrtbl ▷ {r}">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂R,S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="lst∈R → B"/>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="dom(rtbl ▷ {rsrtbl(b)})∩OCC=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬rsrtbl(b)=r">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀b⦂B·b∈LBT⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧(b∈ran(nxt(rsrtbl(b)))⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B)"/>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="⊤"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="frm⊆resrt"/>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="rsrtbl(b)∈R⇒(nxt(rsrtbl(b)))[rsrtbl∼[{rsrtbl(b)}]]⊆rsrtbl∼[{rsrtbl(b)}]"/>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂R,S⦂ℙ(B)·S⊆B⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂R·r∈R⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="b∈LBT"/>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂R·r∈R⇒(∀S⦂ℙ(B)·S⊆B⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B))"/>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∀r⦂R·r∈dom(nxt))∧nxt∈R ⇸ ℙ(B × B)"/>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="resrt⊆R"/>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="r∈rdy">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·r∈R∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="rsrtbl∈B ⇸ R"/>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="rsrtbl∼[{rsrtbl(b)}] ◁ nxt(rsrtbl(b))=rsrtbl∼[{rsrtbl(b)}] ◁ TRK"/>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="⊥"/>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒r∈dom(fst)∧fst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)∧lst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀b⦂B·b∈OCC∧b∈dom(TRK)⇒(nxt(rsrtbl(b)))(b)=TRK(b)"/>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒r∈dom(fst)∧fst∈R ⇸ B∧s∈dom(fst)∧s∈dom(lst)∧lst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R"/>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂R·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="fst∈R → B"/>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="rsrtbl(b)∈rdy"/>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="(nxt(rsrtbl(b)))[rsrtbl∼[{rsrtbl(b)}]]⊆rsrtbl∼[{rsrtbl(b)}]"/>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="rtbl ▷ {rsrtbl(b)}=rsrtbl ▷ {rsrtbl(b)}"/>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="resbl⊆B"/>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="lst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂R·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂R·r∈dom(fst)"/>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒a∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧b∈dom(rsrtbl)"/>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(fst)∧fst∈R ⇸ B∧r∈dom(lst)∧lst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="nxt∈R → (B ⤔ B)"/>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂R·r∈R⇒(∀S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B)))"/>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂R·¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="TRK∈B ⤔ B"/>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="lst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧r∈dom(lst)∧lst∈R ⇸ B∧r∈dom(fst)∧fst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="OCC⊆resbl"/>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="rdy⊆frm"/>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="LBT⊆OCC"/>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="b∉dom(TRK)"/>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒rtbl ▷ {r}={b} ⩤ rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂R·r∈dom(lst)"/>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="nxt∈R ⇸ ℙ(B × B)"/>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬b∈dom(TRK)"/>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂R·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)"/>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="fst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="dom(rtbl)=B"/>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒r∈dom(lst)∧lst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)∧lst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="fst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="rsrtbl(b)=r">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="rtbl∈B ↔ R"/>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="rsrtbl(b)∈frm⇒rsrtbl∼[{rsrtbl(b)}] ◁ nxt(rsrtbl(b))=rsrtbl∼[{rsrtbl(b)}] ◁ TRK"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="ran(rtbl)=R"/>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒r∈dom(lst)∧lst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)"/>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂R·r∈dom(nxt)"/>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="rtbl ▷ {r}={b} ⩤ rsrtbl ▷ {r}">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂R·r∈R⇒fst(r)≠lst(r)"/>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="b∈rsrtbl∼[{rsrtbl(b)}]"/>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="r∈rdy⇒rtbl ▷ {r}={b} ⩤ rsrtbl ▷ {r}">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prExpr name="e0" org.eventb.core.expression="rsrtbl(b)"/>
+<org.eventb.core.prExpr name="e1" org.eventb.core.expression="r">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prExpr>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="BACK_MOVE_2/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37" org.eventb.core.prSets="B,R">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p38"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p36"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p39"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p44"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p8"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p46"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p45"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p47"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p15"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p49,p40,p42,p41,p50,p43"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p48"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p51"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p18"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p53"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p52"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p54"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p30"/>
+<org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p55" org.eventb.core.prInfHyps="p56"/>
+<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p55"/>
+<org.eventb.core.prHypAction name="FORWARD_INF20" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p57"/>
+<org.eventb.core.prHypAction name="HIDE21" org.eventb.core.prHyps="p28"/>
+<org.eventb.core.prHypAction name="FORWARD_INF22" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p49,p50"/>
+<org.eventb.core.prHypAction name="HIDE23" org.eventb.core.prHyps="p58"/>
+<org.eventb.core.prHypAction name="FORWARD_INF24" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p59"/>
+<org.eventb.core.prHypAction name="HIDE25" org.eventb.core.prHyps="p4"/>
+<org.eventb.core.prHypAction name="FORWARD_INF26" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p60"/>
+<org.eventb.core.prHypAction name="HIDE27" org.eventb.core.prHyps="p20"/>
+<org.eventb.core.prHypAction name="FORWARD_INF28" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p61"/>
+<org.eventb.core.prHypAction name="HIDE29" org.eventb.core.prHyps="p23"/>
+<org.eventb.core.prHypAction name="FORWARD_INF30" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p63"/>
+<org.eventb.core.prHypAction name="HIDE31" org.eventb.core.prHyps="p62"/>
+<org.eventb.core.prHypAction name="FORWARD_INF32" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p64"/>
+<org.eventb.core.prHypAction name="HIDE33" org.eventb.core.prHyps="p33"/>
+<org.eventb.core.prHypAction name="FORWARD_INF34" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p66,p67"/>
+<org.eventb.core.prHypAction name="HIDE35" org.eventb.core.prHyps="p65"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p68">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.impI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p70" org.eventb.core.prHyps="p69">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst r)" org.eventb.core.prHyps="p26">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p71">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.trueGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p71" org.eventb.core.prHyps=""/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p72">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p26"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoImpE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto ImpE" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69,p72" org.eventb.core.prInfHyps="p73"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p72"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.cut" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (rsrtbl(b)≠r)" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p74">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p75">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="p1,p47,p2,p3,p57,p5,p51,p73,p44,p6,p38,p7,p10,p9,p60,p11,p13,p12,p61,p14,p16,p17,p19,p21,p22,p69,p24,p64,p25,p26,p27,p29,p31,p32,p34,p54,p35,p37,p59">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:2000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p76">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="p1,p47,p2,p3,p57,p5,p51,p73,p44,p6,p38,p7,p10,p9,p60,p11,p13,p12,p61,p14,p16,p17,p19,p21,p22,p69,p24,p64,p25,p26,p27,p29,p31,p32,p34,p54,p35,p37,p59">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:2000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="p75,p76">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p78">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p12"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst b)" org.eventb.core.prHyps="p31">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p71">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.trueGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p71" org.eventb.core.prHyps=""/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p79">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p31"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoImpE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto ImpE" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p79,p2" org.eventb.core.prInfHyps="p80"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p79"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.impE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ hyp mp (b∈OCC⇒(nxt(rsrtbl(b)))(b)=TRK(b))" org.eventb.core.prHyps="p80">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p81">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p80"/>
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p81" org.eventb.core.prHyps="p75,p12,p2,p69,p73,p76,p25,p17">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p81,p82">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p80"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoImpE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto ImpE" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p80"/>
+<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p82"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst rsrtbl(b))" org.eventb.core.prHyps="p4">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p74">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p75">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="p75"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p76">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="p76"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p83,p75,p76">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p4"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p84"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p83"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.cut" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (b∈rsrtbl∼[{rsrtbl(b)}])" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p74">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p75">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="p75"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p76">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="p76"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p85" org.eventb.core.prHyps="p75,p76">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p85" org.eventb.core.prHyps="p75,p81,p12,p2,p69,p82,p76,p73,p25,p17,p84">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="2" org.eventb.core.prHyps="p75,p85,p76">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.cut" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((nxt(rsrtbl(b)))(b)∈rsrtbl∼[{rsrtbl(b)}])" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p86">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p87">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p87" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p75">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="p75"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p76">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="p76"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="2" org.eventb.core.prGoal="p88">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p88" org.eventb.core.prHyps="p1,p81,p47,p2,p3,p57,p5,p51,p73,p44,p6,p38,p7,p10,p9,p60,p11,p13,p12,p61,p14,p16,p17,p19,p21,p22,p69,p82,p76,p24,p64,p25,p26,p27,p29,p75,p31,p32,p34,p54,p35,p85,p37,p59,p84">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:2000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="3" org.eventb.core.prGoal="p49">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.isFunGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p7"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="4" org.eventb.core.prGoal="p89">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allmpD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst rsrtbl(b))" org.eventb.core.prHyps="p34">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p74">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p75">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="p75"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p76">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="p76"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p90" org.eventb.core.prHyps="p75,p76">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p34"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p24"/>
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p90" org.eventb.core.prHyps="p17,p2,p25,p69,p73,p75,p76,p12,p81,p82,p84,p85,p24">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="2" org.eventb.core.prHyps="p75,p76,p90,p91">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p34"/>
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p89" org.eventb.core.prHyps="p17,p2,p25,p69,p73,p75,p76,p12,p81,p82,p84,p85,p90,p91">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="5" org.eventb.core.prGoal="p92">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="p1,p81,p47,p2,p3,p57,p5,p51,p73,p44,p6,p38,p7,p10,p9,p60,p11,p13,p12,p61,p14,p16,p17,p19,p21,p22,p69,p82,p76,p24,p64,p25,p26,p27,p29,p75,p31,p32,p34,p54,p35,p85,p37,p59,p84">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:2000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="p75,p49,p89,p88,p92,p76">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="p81,p2,p69,p88,p92,p73,p76,p82,p89,p25,p75,p12,p49,p85,p17,p84">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="2" org.eventb.core.prHyps="p75,p88,p76,p92,p93,p49,p89">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh ((nxt(rsrtbl(b)))(b)=TRK(b))" org.eventb.core.prHyps="p82">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p94"/>
+<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p93"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p94"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.contr" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ct goal" org.eventb.core.prGoal="p78" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p96" org.eventb.core.prHyps="p95">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.he" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he (rsrtbl(b)=r)" org.eventb.core.prHyps="p95">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p97"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p98"/>
+<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p69,p73"/>
+<org.eventb.core.prHypAction name="SELECT3" org.eventb.core.prHyps="p98,p97"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p13"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst rsrtbl(b))" org.eventb.core.prHyps="p34">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p74">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p75">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="p75"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p76">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="p76"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p75,p99,p76">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p34"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.impE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ hyp mp (rsrtbl(b)∈frm⇒rsrtbl∼[{rsrtbl(b)}] ◁ nxt(rsrtbl(b))=rsrtbl∼[{rsrtbl(b)}] ◁ TRK)" org.eventb.core.prHyps="p99">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p90">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p99"/>
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p90" org.eventb.core.prHyps="p98,p81,p2,p88,p94,p92,p82,p76,p89,p25,p95,p75,p13,p12,p49,p85,p17,p97,p84">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p91,p90">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p99"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoImpE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto ImpE" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p99"/>
+<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p91"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst rsrtbl(b))" org.eventb.core.prHyps="p29">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p74">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p75">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="p75"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p76">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="p76"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p75,p76,p100">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p29"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoImpE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto ImpE" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p97,p100" org.eventb.core.prInfHyps="p101"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p100"/>
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p96" org.eventb.core.prHyps="p98,p81,p2,p88,p90,p94,p76,p82,p92,p25,p89,p95,p91,p101,p75,p12,p13,p85,p49,p17,p97,p84">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p95"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p82"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p93"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p85"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="2" org.eventb.core.prHyps="p75,p77,p76">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p78"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p77"/>
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p70" org.eventb.core.prHyps="p78,p75,p2,p69,p73,p76,p25,p17">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p77"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e2"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+<org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+<org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B))"/>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀a⦂B,b⦂B·(b∈LBT⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧(b∈ran(nxt(rsrtbl(b)))⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B))∧(b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒a∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R)"/>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="b∈OCC"/>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="rsrtbl(b)≠r">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="rsrtbl(b)∈dom(nxt)"/>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂R,S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="rtbl ▷ {r}=rsrtbl ▷ {r}">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="lst∈R → B"/>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬rsrtbl(b)=r">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="rsrtbl(b)∈R⇒(nxt(rsrtbl(b)))[rsrtbl∼[{rsrtbl(b)}]]⊆rsrtbl∼[{rsrtbl(b)}]"/>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∀r⦂R·r∈dom(nxt))∧nxt∈R ⇸ ℙ(B × B)"/>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="b∈OCC∧b∈dom(TRK)⇒(nxt(rsrtbl(b)))(b)=TRK(b)"/>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒r∈dom(fst)∧fst∈R ⇸ B∧s∈dom(fst)∧s∈dom(lst)∧lst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R"/>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂R·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="resbl⊆B"/>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="TRK∈B ⇸ B"/>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="nxt(rsrtbl(b))∈B ⇸ B"/>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom(nxt(rsrtbl(b)))∧nxt(rsrtbl(b))∈B ⇸ B∧b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R"/>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(fst)∧fst∈R ⇸ B∧r∈dom(lst)∧lst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="lst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="TRK∈B ⤔ B"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="rdy⊆frm"/>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom(nxt(rsrtbl(b)))∧nxt(rsrtbl(b))∈B ⇸ B"/>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="nxt∈R ⇸ ℙ(B × B)"/>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="TRK(b)∈rsrtbl∼[{rsrtbl(b)}]"/>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="rsrtbl(b)∈frm⇒rsrtbl∼[{rsrtbl(b)}] ◁ nxt(rsrtbl(b))=rsrtbl∼[{rsrtbl(b)}] ◁ TRK"/>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="b∈OCC⇒(nxt(rsrtbl(b)))(b)=TRK(b)"/>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="ran(rtbl)=R"/>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒r∈dom(lst)∧lst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)"/>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="b∈dom(TRK)"/>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="rsrtbl(b)∈frm"/>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="rsrtbl(b)∈rdy⇒dom(rtbl ▷ {rsrtbl(b)})∩OCC=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))"/>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="dom(rtbl ▷ {rsrtbl(b)})∩OCC=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀b⦂B·b∈LBT⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧(b∈ran(nxt(rsrtbl(b)))⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B)"/>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="⊤"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="frm⊆resrt"/>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂R,S⦂ℙ(B)·S⊆B⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)"/>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂R·r∈R⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂R·r∈R⇒(∀S⦂ℙ(B)·S⊆B⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B))"/>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="b∈LBT"/>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="resrt⊆R"/>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="r∈rdy">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·r∈R∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="rsrtbl∈B ⇸ R"/>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="(nxt(rsrtbl(b)))(b)=TRK(b)"/>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="rsrtbl∼[{rsrtbl(b)}] ◁ nxt(rsrtbl(b))=rsrtbl∼[{rsrtbl(b)}] ◁ TRK"/>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="⊥"/>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀b⦂B·b∈OCC∧b∈dom(TRK)⇒(nxt(rsrtbl(b)))(b)=TRK(b)"/>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒r∈dom(fst)∧fst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)∧lst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="fst∈R → B"/>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="rsrtbl(b)∈rdy"/>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="(nxt(rsrtbl(b)))[rsrtbl∼[{rsrtbl(b)}]]⊆rsrtbl∼[{rsrtbl(b)}]"/>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="rtbl ▷ {rsrtbl(b)}=rsrtbl ▷ {rsrtbl(b)}"/>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂R·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="lst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂R·r∈dom(fst)"/>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒a∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧b∈dom(rsrtbl)"/>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="(nxt(rsrtbl(b)))(b)∈rsrtbl∼[{rsrtbl(b)}]"/>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂R·¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂R·r∈R⇒(∀S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B)))"/>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="nxt∈R → (B ⤔ B)"/>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧r∈dom(lst)∧lst∈R ⇸ B∧r∈dom(fst)∧fst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="OCC⊆resbl"/>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="LBT⊆OCC"/>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒rtbl ▷ {r}={b} ⩤ rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂R·r∈dom(lst)"/>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂R·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)"/>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="fst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="dom(rtbl)=B"/>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒r∈dom(lst)∧lst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)∧lst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="fst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="TRK(b)∈OCC"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="rtbl∈B ↔ R"/>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="rsrtbl(b)=r">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂R·r∈dom(nxt)"/>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="rtbl ▷ {r}={b} ⩤ rsrtbl ▷ {r}">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂R·r∈R⇒fst(r)≠lst(r)"/>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="b∈rsrtbl∼[{rsrtbl(b)}]"/>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="r∈rdy⇒rtbl ▷ {r}={b} ⩤ rsrtbl ▷ {r}">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prExpr name="e1" org.eventb.core.expression="b"/>
+<org.eventb.core.prExpr name="e0" org.eventb.core.expression="rsrtbl(b)"/>
+<org.eventb.core.prExpr name="e2" org.eventb.core.expression="r">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prExpr>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="FRONT_MOVE_2/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37" org.eventb.core.prSets="B,R">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p38"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p36"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p39"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p44"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p9"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p46"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p45"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p47"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p16"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p49,p40,p41,p42,p50,p43"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p48"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p51"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p18"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p53"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p52"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p54"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p30"/>
+<org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p55" org.eventb.core.prInfHyps="p56"/>
+<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p55"/>
+<org.eventb.core.prHypAction name="FORWARD_INF20" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p57"/>
+<org.eventb.core.prHypAction name="HIDE21" org.eventb.core.prHyps="p28"/>
+<org.eventb.core.prHypAction name="FORWARD_INF22" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p49,p50"/>
+<org.eventb.core.prHypAction name="HIDE23" org.eventb.core.prHyps="p58"/>
+<org.eventb.core.prHypAction name="FORWARD_INF24" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p59"/>
+<org.eventb.core.prHypAction name="HIDE25" org.eventb.core.prHyps="p5"/>
+<org.eventb.core.prHypAction name="FORWARD_INF26" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p60"/>
+<org.eventb.core.prHypAction name="HIDE27" org.eventb.core.prHyps="p20"/>
+<org.eventb.core.prHypAction name="FORWARD_INF28" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p61"/>
+<org.eventb.core.prHypAction name="HIDE29" org.eventb.core.prHyps="p24"/>
+<org.eventb.core.prHypAction name="FORWARD_INF30" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p63"/>
+<org.eventb.core.prHypAction name="HIDE31" org.eventb.core.prHyps="p62"/>
+<org.eventb.core.prHypAction name="FORWARD_INF32" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p64"/>
+<org.eventb.core.prHypAction name="HIDE33" org.eventb.core.prHyps="p33"/>
+<org.eventb.core.prHypAction name="FORWARD_INF34" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p66,p67"/>
+<org.eventb.core.prHypAction name="HIDE35" org.eventb.core.prHyps="p65"/>
+<org.eventb.core.prHypAction name="FORWARD_INF36" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p68"/>
+<org.eventb.core.prHypAction name="HIDE37" org.eventb.core.prHyps="p21"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p69">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.impI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="p70">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst r)" org.eventb.core.prHyps="p29">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p72">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.trueGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p72" org.eventb.core.prHyps=""/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p73">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p29"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoImpE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto ImpE" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70,p73" org.eventb.core.prInfHyps="p74"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p73"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.cut" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (TRK(b)∉dom(rtbl ▷ {r}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p75">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p3">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="p3"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p6">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="p6"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="p3,p6">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p77">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst r)" org.eventb.core.prHyps="p26">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p72">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.trueGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p72" org.eventb.core.prHyps=""/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p78">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p26"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoImpE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto ImpE" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70,p78" org.eventb.core.prInfHyps="p79"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p78"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (rtbl ▷ {r}=rsrtbl ▷ {r})" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="p79">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p81">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p80"/>
+<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p74"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p80"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p11"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst b)" org.eventb.core.prHyps="p31">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p72">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.trueGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p72" org.eventb.core.prHyps=""/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p82">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p31"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoImpE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto ImpE" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2,p82,p3" org.eventb.core.prInfHyps="p83"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p82"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.doCase" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (rsrtbl(b)=r)" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p84">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p85">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p85" org.eventb.core.prHyps="p1,p68,p2,p47,p3,p4,p57,p6,p51,p79,p44,p7,p38,p8,p11,p10,p60,p12,p13,p14,p61,p15,p17,p74,p19,p22,p23,p70,p83,p25,p64,p26,p27,p29,p31,p32,p80,p34,p54,p35,p37,p59">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:2000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p86">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="p1,p68,p2,p47,p3,p4,p57,p6,p51,p79,p44,p7,p38,p8,p11,p10,p60,p12,p13,p14,p61,p15,p17,p74,p19,p22,p23,p70,p83,p25,p64,p26,p27,p29,p31,p32,p80,p34,p54,p35,p37,p59">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:2000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p87">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.he" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he (rsrtbl(b)=r)" org.eventb.core.prGoal="p81" org.eventb.core.prHyps="p87">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p91">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p88"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p89"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p90"/>
+<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p70,p80,p79"/>
+<org.eventb.core.prHypAction name="SELECT4" org.eventb.core.prHyps="p89,p88,p90"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.cut" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (dom(rsrtbl ▷ {rsrtbl(b)})={b})" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p84">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p85">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p85" org.eventb.core.prHyps="p89,p1,p68,p2,p47,p3,p4,p57,p6,p51,p79,p44,p7,p38,p8,p11,p10,p60,p12,p13,p14,p61,p15,p90,p17,p74,p19,p22,p23,p70,p83,p25,p64,p87,p26,p27,p29,p31,p32,p80,p34,p54,p35,p37,p88,p59">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:2000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p86">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="p89,p1,p68,p2,p47,p3,p4,p57,p6,p51,p79,p44,p7,p38,p8,p11,p10,p60,p12,p13,p14,p61,p15,p90,p17,p74,p19,p22,p23,p70,p83,p25,p64,p87,p26,p27,p29,p31,p32,p80,p34,p54,p35,p37,p88,p59">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:2000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="p85,p86">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="p89,p85,p2,p68,p3,p6,p83,p86,p87,p90,p11,p88">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="2" org.eventb.core.prHyps="p85,p86,p92">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (dom(rsrtbl ▷ {rsrtbl(b)})={b})" org.eventb.core.prGoal="p91" org.eventb.core.prHyps="p92">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p94">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p93"/>
+<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p90"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p93"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p95">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.he" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he ((nxt(rsrtbl(b)))(b)=TRK(b))" org.eventb.core.prGoal="p95" org.eventb.core.prHyps="p83">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p97">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p96"/>
+<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p68"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p96"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst rsrtbl(b))" org.eventb.core.prHyps="p9">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p84">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p85">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p85" org.eventb.core.prHyps="p85"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p86">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="p86"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p85,p86,p98">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p9"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p98" org.eventb.core.prInfHyps="p99"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p98"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.contr" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ct goal" org.eventb.core.prGoal="p97" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p101" org.eventb.core.prHyps="p100">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst {b})" org.eventb.core.prHyps="p99">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p72">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.trueGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p72" org.eventb.core.prHyps=""/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p102">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p99"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.impE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ hyp mp ({b}⊆B∧{b}⊆(nxt(rsrtbl(b)))[{b}]⇒{b}=∅)" org.eventb.core.prHyps="p102">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p103">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p102"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p103" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p104">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p104" org.eventb.core.prHyps="p89,p2,p3,p6,p83,p86,p87,p92,p11,p96,p100,p85,p93,p88">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p105">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p105" org.eventb.core.prHyps="p89,p2,p3,p6,p83,p86,p87,p92,p11,p96,p100,p85,p93,p88">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p104,p106,p105">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p102"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoImpE" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto ImpE" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p102"/>
+<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p106"/>
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p101" org.eventb.core.prHyps="p89,p2,p3,p6,p106,p83,p86,p87,p92,p11,p96,p100,p85,p105,p104,p93,p88">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p83"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p92"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p92"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p87"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="2" org.eventb.core.prHyps="p107">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.he" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he ((nxt(rsrtbl(b)))(b)=TRK(b))" org.eventb.core.prGoal="p81" org.eventb.core.prHyps="p83">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p108">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p96"/>
+<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p68"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p96"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst rsrtbl(b))" org.eventb.core.prHyps="p5">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p84">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p85">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p85" org.eventb.core.prHyps="p1,p68,p2,p47,p3,p4,p57,p6,p51,p79,p44,p7,p38,p8,p96,p11,p10,p60,p107,p12,p13,p14,p61,p15,p17,p74,p19,p22,p23,p70,p83,p25,p64,p26,p27,p29,p31,p32,p80,p34,p54,p35,p37,p59">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:2000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p86">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="p1,p68,p2,p47,p3,p4,p57,p6,p51,p79,p44,p7,p38,p8,p96,p11,p10,p60,p107,p12,p13,p14,p61,p15,p17,p74,p19,p22,p23,p70,p83,p25,p64,p26,p27,p29,p31,p32,p80,p34,p54,p35,p37,p59">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:2000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prHyps="p85,p109,p86">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p5"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p109" org.eventb.core.prInfHyps="p110"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p109"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.cut" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (b∈rsrtbl∼[{rsrtbl(b)}])" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p84">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p85">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p85" org.eventb.core.prHyps="p85"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p86">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="p86"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p111" org.eventb.core.prHyps="p85,p86">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p111" org.eventb.core.prHyps="p2,p3,p6,p70,p79,p83,p86,p11,p96,p107,p85,p80,p110">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="2" org.eventb.core.prHyps="p85,p111,p86">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.cut" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((nxt(rsrtbl(b)))(b)∈rsrtbl∼[{rsrtbl(b)}])" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p112">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prGoal="p112" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p113">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p113" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p85">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p85" org.eventb.core.prHyps="p85"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p86">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="p86"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="2" org.eventb.core.prGoal="p114">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p114" org.eventb.core.prHyps="p1,p68,p2,p47,p3,p4,p57,p6,p51,p79,p44,p7,p38,p8,p96,p11,p10,p60,p107,p12,p13,p14,p61,p15,p17,p74,p19,p22,p23,p70,p86,p83,p25,p64,p26,p27,p29,p85,p31,p32,p80,p34,p54,p35,p111,p37,p59,p110">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:2000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="3" org.eventb.core.prGoal="p49">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.isFunGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p8"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="4" org.eventb.core.prGoal="p115">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allmpD" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst rsrtbl(b))" org.eventb.core.prHyps="p34">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p84">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p85">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p85" org.eventb.core.prHyps="p85"/>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p86">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="p86"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p116" org.eventb.core.prHyps="p85,p86">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p34"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.mngHyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p25"/>
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p116" org.eventb.core.prHyps="p2,p3,p70,p6,p79,p80,p11,p83,p107,p96,p85,p86,p110,p111,p25">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="2" org.eventb.core.prHyps="p85,p86,p116,p117">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p34"/>
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p115" org.eventb.core.prHyps="p2,p3,p70,p6,p79,p80,p11,p83,p107,p96,p85,p86,p110,p111,p116,p117">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="5" org.eventb.core.prGoal="p118">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p118" org.eventb.core.prHyps="p1,p68,p2,p47,p3,p4,p57,p6,p51,p79,p44,p7,p38,p8,p96,p11,p10,p60,p107,p12,p13,p14,p61,p15,p17,p74,p19,p22,p23,p70,p86,p83,p25,p64,p26,p27,p29,p85,p31,p32,p80,p34,p54,p35,p111,p37,p59,p110">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:2000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p119" org.eventb.core.prHyps="p85,p49,p115,p114,p86,p118">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p119" org.eventb.core.prHyps="p2,p3,p6,p70,p114,p79,p83,p86,p118,p115,p11,p96,p107,p85,p80,p111,p49,p110">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="2" org.eventb.core.prHyps="p85,p114,p86,p118,p119,p49,p115">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p108" org.eventb.core.prHyps="p2,p3,p6,p70,p114,p79,p83,p86,p118,p119,p115,p11,p96,p107,p85,p80,p111,p49,p110">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p119"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p111"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p83"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p87"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e2"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p79"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e3"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="2" org.eventb.core.prHyps="p76,p3,p6">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p77"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p76"/>
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalPP" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="p2,p68,p3,p6,p70,p77,p74">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p76"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e3"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+<org.eventb.core.prIdent name="b" org.eventb.core.type="B"/>
+<org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B))"/>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀a⦂B,b⦂B·(b∈LBT⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧(b∈ran(nxt(rsrtbl(b)))⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B))∧(b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒a∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R)"/>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="b∈OCC"/>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬TRK(b)∈OCC"/>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="rsrtbl(b)∈dom(nxt)"/>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂R,S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="rtbl ▷ {r}=rsrtbl ▷ {r}">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="lst∈R → B"/>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬rsrtbl(b)=r">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="b∈dom(TRK)∧TRK∈B ⇸ B"/>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="rsrtbl(b)∈R⇒(nxt(rsrtbl(b)))[rsrtbl∼[{rsrtbl(b)}]]⊆rsrtbl∼[{rsrtbl(b)}]"/>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∀r⦂R·r∈dom(nxt))∧nxt∈R ⇸ ℙ(B × B)"/>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="dom(rsrtbl ▷ {rsrtbl(b)})={b}"/>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="b∈OCC∧b∈dom(TRK)⇒(nxt(rsrtbl(b)))(b)=TRK(b)"/>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="(nxt(rsrtbl(b)))(b)=b"/>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒r∈dom(fst)∧fst∈R ⇸ B∧s∈dom(fst)∧s∈dom(lst)∧lst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R"/>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂R·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒dom(rtbl ▷ {r})∩(OCC∪{TRK(b)})=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="rsrtbl(b)∈R⇒(∀S⦂ℙ(B)·S⊆B∧S⊆(nxt(rsrtbl(b)))[S]⇒S=(∅ ⦂ ℙ(B)))"/>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="dom(rtbl ▷ {r})∩(OCC∪{TRK(b)})=(∅ ⦂ ℙ(B))">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="r∈rdy⇒dom(rtbl ▷ {r})∩(OCC∪{TRK(b)})=(∅ ⦂ ℙ(B))">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬TRK(b)∈dom(rsrtbl ▷ {rsrtbl(b)})"/>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="resbl⊆B"/>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="TRK∈B ⇸ B"/>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="nxt(rsrtbl(b))∈B ⇸ B"/>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom(nxt(rsrtbl(b)))∧nxt(rsrtbl(b))∈B ⇸ B∧b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R"/>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(fst)∧fst∈R ⇸ B∧r∈dom(lst)∧lst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="lst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="TRK∈B ⤔ B"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="rdy⊆frm"/>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom(nxt(rsrtbl(b)))∧nxt(rsrtbl(b))∈B ⇸ B"/>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="TRK(b)∉dom(rtbl ▷ {r})">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="nxt∈R ⇸ ℙ(B × B)"/>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="{b}∩OCC=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬(nxt(rsrtbl(b)))(b)=b"/>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬TRK(b)∈dom(rtbl ▷ {r})">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="ran(rtbl)=R"/>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="b∈dom(rsrtbl)"/>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="¬TRK(b)∈{b}"/>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="{b}⊆B"/>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒r∈dom(lst)∧lst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)"/>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="b∈dom(TRK)"/>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="rsrtbl(b)∈frm"/>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="b∈dom(nxt(rsrtbl(b)))"/>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬(nxt(rsrtbl(b)))(b)∈OCC"/>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀b⦂B·b∈LBT⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧(b∈ran(nxt(rsrtbl(b)))⇒b∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧rsrtbl(b)∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧b∈dom((nxt(rsrtbl(b)))∼)∧(nxt(rsrtbl(b)))∼∈B ⇸ B)"/>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="⊤"/>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="{b}⊆B∧{b}⊆(nxt(rsrtbl(b)))[{b}]⇒{b}=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="frm⊆resrt"/>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂R,S⦂ℙ(B)·S⊆B⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)"/>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂R·r∈R⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂R·r∈R⇒(∀S⦂ℙ(B)·S⊆B⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B))"/>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="resrt⊆R"/>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="TRK(b)∉OCC"/>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀S⦂ℙ(B)·S⊆B∧S⊆(nxt(rsrtbl(b)))[S]⇒S=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="r∈rdy">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="{b}=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·r∈R∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="(nxt(rsrtbl(b)))(b)=TRK(b)"/>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="rsrtbl∈B ⇸ R"/>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="rsrtbl∼[{rsrtbl(b)}] ◁ nxt(rsrtbl(b))=rsrtbl∼[{rsrtbl(b)}] ◁ TRK"/>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="⊥"/>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀b⦂B·b∈OCC∧b∈dom(TRK)⇒(nxt(rsrtbl(b)))(b)=TRK(b)"/>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒r∈dom(fst)∧fst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)∧lst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="fst∈R → B"/>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="¬TRK(b)=b"/>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="rsrtbl(b)∈rdy"/>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="(nxt(rsrtbl(b)))[rsrtbl∼[{rsrtbl(b)}]]⊆rsrtbl∼[{rsrtbl(b)}]"/>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="rtbl ▷ {rsrtbl(b)}=rsrtbl ▷ {rsrtbl(b)}"/>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂R·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="lst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂R·r∈dom(fst)"/>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒a∈dom(rsrtbl)∧rsrtbl∈B ⇸ R∧b∈dom(rsrtbl)"/>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="(nxt(rsrtbl(b)))(b)∈rsrtbl∼[{rsrtbl(b)}]"/>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂R·¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂R·r∈R⇒(∀S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B)))"/>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="nxt∈R → (B ⤔ B)"/>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧r∈dom(lst)∧lst∈R ⇸ B∧r∈dom(fst)∧fst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="OCC⊆resbl"/>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="{b}⊆(nxt(rsrtbl(b)))[{b}]"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="LBT⊆OCC"/>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂R·r∈dom(lst)"/>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂R·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="dom(rsrtbl ▷ {rsrtbl(b)})∩OCC=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬TRK(b)∈dom(rsrtbl ▷ {r})">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(B))">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)"/>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="fst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="dom(rtbl)=B"/>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬(nxt(rsrtbl(b)))(b)∈dom(rsrtbl ▷ {r})">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒r∈dom(lst)∧lst∈R ⇸ B∧s∈dom(fst)∧fst∈R ⇸ B∧s∈dom(lst)∧lst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="fst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="rtbl∈B ↔ R"/>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(B))">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="rsrtbl(b)=r">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="{b}⊆B∧{b}⊆(nxt(rsrtbl(b)))[{b}]"/>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="dom(rsrtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(B))">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂R·r∈dom(nxt)"/>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂R·r∈R⇒fst(r)≠lst(r)"/>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="b∈rsrtbl∼[{rsrtbl(b)}]"/>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prExpr name="e0" org.eventb.core.expression="{b}"/>
+<org.eventb.core.prExpr name="e2" org.eventb.core.expression="b"/>
+<org.eventb.core.prExpr name="e1" org.eventb.core.expression="rsrtbl(b)"/>
+<org.eventb.core.prExpr name="e3" org.eventb.core.expression="r">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prExpr>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="INITIALISATION/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p1">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.trueGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ROUTES))⊆(∅ ⦂ ℙ(ROUTES))"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="INITIALISATION/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="⊤"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈(∅ ⦂ ℙ(ROUTES))⇒rtbl ▷ {r}=(∅ ⦂ ℙ(BLOCKS×ROUTES)) ▷ {r}"/>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="INITIALISATION/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈(∅ ⦂ ℙ(ROUTES))⇒dom(rtbl ▷ {r})∩(∅ ⦂ ℙ(BLOCKS))=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="⊤"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_reservation/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p6"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p8"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p10"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p12"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p13"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p14"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p16"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p18"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p19"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p21"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p20"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p23"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p22"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p25"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p24"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p27"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p26"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p28"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p5"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p29"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p7"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p30"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p9"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p31"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p32"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p17"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p33"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p21"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p34"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p23"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p35"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p25"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p36"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p27"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p37"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p28"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p38"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p29"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p39"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p30"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p41">
+<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p2,p3,p12,p41">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="r∉resrt"/>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈rdy⇒rtbl ▷ {r0}=(rsrtbl∪(rtbl ▷ {r})) ▷ {r0}"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬r∈resrt"/>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="r0∈rdy">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="r0∈rdy⇒rtbl ▷ {r0}=(rsrtbl∪(rtbl ▷ {r})) ▷ {r0}">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="rtbl ▷ {r0}=(rsrtbl∪(rtbl ▷ {r})) ▷ {r0}">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_freeing/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34" org.eventb.core.prSets="B,R">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p35"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p32"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p36"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p20"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p37"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p4"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p38"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p39"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p40"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p41"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p42"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p43"/>
+<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p44"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p45"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p46"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p47"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p48"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p49"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p40"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p50"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p41"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p51"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p42"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p52"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p43"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p53"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p44"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p45"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p46"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p47"/>
+<org.eventb.core.prRule name="org.eventb.contributer.seqprover.fr1866809.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Simplify using dom of total function" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p57"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
+<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p8,p30,p12,p7,p21,p1,p14,p5,p11,p31,p34,p24,p9,p28,p16,p13,p27,p25,p19,p3,p22,p2,p29,p10,p23,p17,p33,p26,p18,p6,p35,p36,p37,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+<org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="lst∈R → B"/>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="lst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)"/>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="rtbl∈B ↔ R"/>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂R·r∈R⇒(∀S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B)))"/>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="ran(rtbl)=R"/>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂R,s⦂R·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="OCC⊆resbl"/>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂R·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀b⦂B·b∈OCC∧b∈dom(TRK)⇒(nxt(rsrtbl(b)))(b)=TRK(b)"/>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="TRK∈B ⤔ B"/>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂R,S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂R·⊤⇒(∀S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B)))"/>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂R·¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="dom(rtbl)=B"/>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂R·r∈R⇒fst(r)≠lst(r)"/>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈resbl⇒¬rsrtbl(a)=rsrtbl(b)"/>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="rdy⊆frm"/>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="resrt⊆R"/>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂R·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="frm⊆resrt"/>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="nxt∈R → (B ⤔ B)"/>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂R·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂R·⊤⇒¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂R·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂R·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="rdy⊆frm ∖ {r}"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="fst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂R·r∈R⇒¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂R,s⦂R·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="fst∈R → B"/>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="LBT⊆OCC"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="resbl⊆B"/>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂R·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·r∈R∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂R·r∈R⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·⊤∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂R·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="FRONT_MOVE_1/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39" org.eventb.core.prSets="B,R">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p44">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p40"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p36"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p41"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p22"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p42"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p4"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p43"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p45"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p46"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p47"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p48"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p49"/>
+<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p50"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p51"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p52"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p53"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p45"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p46"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p47"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p48"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p58"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p49"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p59"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p50"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p60"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p51"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p61"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p52"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p62"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p53"/>
+<org.eventb.core.prRule name="org.eventb.contributer.seqprover.fr1866809.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Simplify using dom of total function" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p63"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p64"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p39"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p65"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p43"/>
+<org.eventb.core.prRule name="com.clearsy.atelierb.provers.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p7,p33,p11,p6,p23,p1,p15,p5,p10,p34,p38,p26,p8,p31,p17,p14,p30,p29,p20,p3,p24,p2,p32,p9,p25,p19,p37,p28,p21,p35,p13,p27,p12,p40,p41,p42,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+<org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="lst∈R → B"/>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="lst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="rtbl∈B ↔ R"/>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂R·r∈R⇒(∀S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B)))"/>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="fst(r)∈resbl"/>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="ran(rtbl)=R"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="rsrtbl(fst(r))=r"/>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂R,s⦂R·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="OCC⊆resbl"/>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂R·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀b⦂B·b∈OCC∧b∈dom(TRK)⇒(nxt(rsrtbl(b)))(b)=TRK(b)"/>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="TRK∈B ⤔ B"/>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂R,S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂R·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="rdy⊆frm∪{r}"/>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂R·⊤⇒(∀S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B)))"/>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀r⦂R·¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="dom(rtbl)=B"/>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂R·r∈R⇒fst(r)≠lst(r)"/>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈resbl⇒¬rsrtbl(a)=rsrtbl(b)"/>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="rdy⊆frm"/>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="resrt⊆R"/>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="fst(r)∈dom(rsrtbl)"/>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀r⦂R,s⦂R·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂R·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="frm⊆resrt"/>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="nxt∈R → (B ⤔ B)"/>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂R·⊤⇒¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂R·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂R·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="rsrtbl∈B ⇸ R"/>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂R·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="fst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂R·r∈R⇒¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂R,s⦂R·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="r∈dom(fst)"/>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="fst∈R → B"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="LBT⊆OCC"/>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="resbl⊆B"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="fst∈R ⇸ B"/>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂R·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·r∈R∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="rdy ∖ {r}⊆frm"/>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂R·r∈R⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="r∈R"/>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·⊤∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="r∈rdy"/>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂R·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="FRONT_MOVE_1/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38" org.eventb.core.prSets="BLOCKS,ROUTES">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p39"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p29"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p40"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p28"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p41"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p42"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p43"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p44"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p45"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p46"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p47"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p48"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p23"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p49"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p38"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p50"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p30"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p51"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p52"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p39"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p53"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p40"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p54"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p41"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p55"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p44"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p56"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p45"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p48"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p58"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p49"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p59"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p50"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p60"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p51"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p61"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p52"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p62"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p53"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p63"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p54"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p64">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p65">
+<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p4,p14,p21,p26,p10,p15,p6,p8,p33,p18,p20,p2,p25,p1,p9,p27,p22,p5,p34,p36,p31,p24,p35,p12,p19,p32,p37,p11,p42,p55,p56,p57,p58,p59,p60,p61,p62,p63,p65">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="lst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="resrt⊆ROUTES"/>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈rdy ∖ {r}⇒rtbl ▷ {r0}=rsrtbl ▷ {r0}"/>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="rsrtbl(fst(r))=r"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="OCC⊆resbl"/>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="rdy⊆frm"/>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="fst(r)∈dom(rsrtbl)"/>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="rtbl ▷ {r0}=rsrtbl ▷ {r0}">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="fst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="r0∈rdy ∖ {r}">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="r∈dom(fst)"/>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="LBT⊆OCC"/>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="r0∈rdy ∖ {r}⇒rtbl ▷ {r0}=rsrtbl ▷ {r0}">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="r∈rdy"/>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="FRONT_MOVE_1/grd1/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38" org.eventb.core.prSets="BLOCKS,ROUTES">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p39"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p29"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p40"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p28"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p41"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p42"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p43"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p44"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p45"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p46"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p47"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p48"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p23"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p49"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p38"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p50"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p30"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p51"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p52"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p39"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p53"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p40"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p54"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p41"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p55"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p44"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p56"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p45"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p48"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p58"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p49"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p59"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p50"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p60"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p51"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p61"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p52"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p62"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p53"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p63"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p54"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p14,p21,p26,p10,p15,p6,p8,p33,p18,p20,p2,p25,p1,p9,p27,p22,p5,p34,p36,p31,p24,p35,p12,p19,p32,p37,p11,p42,p55,p56,p57,p58,p59,p60,p61,p62,p63">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="lst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="resrt⊆ROUTES"/>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="rsrtbl(fst(r))=r"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈frm"/>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="OCC⊆resbl"/>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="rdy⊆frm"/>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="fst(r)∈dom(rsrtbl)"/>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="fst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="r∈dom(fst)"/>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="LBT⊆OCC"/>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="r∈rdy"/>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="BACK_MOVE_1/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34" org.eventb.core.prSets="BLOCKS,ROUTES">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p35"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p28"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p36"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p37"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p38"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p39"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p9"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p40"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p41"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p42"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p43"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p44"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p45"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p46"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p34"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p47"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p29"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p48"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p49"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p35"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p50"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p36"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p51"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p37"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p52"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p53"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p42"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p54"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p45"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p46"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p47"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p48"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p58"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p49"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p59"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p50"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p60"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p51"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p61">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="p62">
+<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="p4,p14,p20,p25,p12,p15,p7,p10,p31,p18,p19,p2,p24,p1,p11,p26,p21,p6,p32,p33,p30,p23,p5,p38,p39,p52,p53,p54,p55,p56,p57,p58,p59,p60,p62">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="lst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="resrt⊆ROUTES"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="r∈rdy⇒dom(rtbl ▷ {r})∩(OCC ∖ {b})=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="OCC⊆resbl"/>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬b∈dom(TRK)"/>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩(OCC ∖ {b})=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="rdy⊆frm"/>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="b∈LBT"/>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="b∉dom(TRK)"/>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="fst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="LBT⊆OCC"/>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="dom(rtbl ▷ {r})∩(OCC ∖ {b})=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="r∈rdy">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="BACK_MOVE_2/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36" org.eventb.core.prSets="BLOCKS,ROUTES">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p37"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p28"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p38"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p39"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p40"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p41"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p42"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p43"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p44"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p45"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p46"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p47"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p36"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p48"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p29"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p49"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p50"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p37"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p51"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p38"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p52"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p39"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p53"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p42"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p54"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p43"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p55"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p46"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p47"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p48"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p58"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p49"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p59"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p50"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p60"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p51"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p61"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p52"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p63">
+<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p4,p14,p20,p25,p12,p15,p7,p10,p31,p18,p19,p2,p24,p1,p11,p26,p21,p6,p32,p34,p30,p23,p5,p9,p33,p35,p40,p53,p54,p55,p56,p57,p58,p59,p60,p61,p63">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="lst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="resrt⊆ROUTES"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="r∈rdy⇒dom(rtbl ▷ {r})∩(OCC ∖ {b})=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="OCC⊆resbl"/>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="TRK(b)∈OCC"/>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩(OCC ∖ {b})=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="rdy⊆frm"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="TRK∈BLOCKS ⇸ BLOCKS"/>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="b∈LBT"/>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="b∈dom(TRK)"/>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="fst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="LBT⊆OCC"/>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="dom(rtbl ▷ {r})∩(OCC ∖ {b})=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="r∈rdy">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_formation/grd2/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS,ROUTES">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139,p140"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139,p140"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p141" org.eventb.core.prInfHyps="p142"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p141"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p143" org.eventb.core.prInfHyps="p144"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p143"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p145" org.eventb.core.prInfHyps="p146"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p145"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p147" org.eventb.core.prInfHyps="p148"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p147"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p149"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p151"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p150"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p152" org.eventb.core.prInfHyps="p153"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p152"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p154"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p155"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p156" org.eventb.core.prInfHyps="p157"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p156"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p158" org.eventb.core.prInfHyps="p159"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p158"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p160" org.eventb.core.prInfHyps="p161"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p160"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p162" org.eventb.core.prInfHyps="p163"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p162"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p164"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p142"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p144" org.eventb.core.prInfHyps="p165"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p144"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p166"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p146"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p151" org.eventb.core.prInfHyps="p167"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p151"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p153" org.eventb.core.prInfHyps="p168"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p153"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p157" org.eventb.core.prInfHyps="p169"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p157"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p159" org.eventb.core.prInfHyps="p170"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p159"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p161" org.eventb.core.prInfHyps="p171"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p161"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p163" org.eventb.core.prInfHyps="p172"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p163"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p164" org.eventb.core.prInfHyps="p173"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p164"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p165" org.eventb.core.prInfHyps="p174"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p165"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p166" org.eventb.core.prInfHyps="p175"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p166"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N})" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p176">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps=""/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10})" org.eventb.core.prGoal="p176" org.eventb.core.prHyps="p95">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p177">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps=""/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p177" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p178"/>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p179"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p95"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p3"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prPred name="p159" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=D"/>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=F"/>
+<org.eventb.core.prPred name="p176" org.eventb.core.predicate="r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ({A,B,C,D,E,F,G,H,I,J,K,L,M,N} × {A,B,C,D,E,F,G,H,I,J,K,L,M,N})"/>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=K"/>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬K=M"/>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=H"/>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R6"/>
+<org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R9"/>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=B"/>
+<org.eventb.core.prPred name="p163" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬D=N"/>
+<org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R5"/>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=J"/>
+<org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p157" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=L"/>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=J"/>
+<org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R8=R10"/>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R4"/>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=F"/>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=J"/>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬L=M"/>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R2=R10"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=L"/>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R7"/>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=K"/>
+<org.eventb.core.prPred name="p178" org.eventb.core.predicate="r∈dom(nxt)"/>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=C"/>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=G"/>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬H=M"/>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬F=N"/>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=K"/>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=I"/>
+<org.eventb.core.prPred name="p174" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p161" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=L"/>
+<org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R9"/>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R6"/>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=D"/>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=K"/>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=G"/>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=L"/>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=I"/>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬I=N"/>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R8"/>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=L"/>
+<org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R9"/>
+<org.eventb.core.prPred name="p172" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R9"/>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R2=R3"/>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R5"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬B=M"/>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=K"/>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}"/>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬R1=R2"/>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="¬M=N"/>
+<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R7"/>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}"/>
+<org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R7=R10"/>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=F"/>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=I"/>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R3=R10"/>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=J"/>
+<org.eventb.core.prPred name="p162" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=I"/>
+<org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R4=R5"/>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=L"/>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=L"/>
+<org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R8"/>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R4"/>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})"/>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R8"/>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=I"/>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=K"/>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=H"/>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=H"/>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=C"/>
+<org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p164" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p140" org.eventb.core.predicate="¬R9=R10"/>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R1=R10"/>
+<org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R7"/>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=G"/>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=L"/>
+<org.eventb.core.prPred name="p160" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R5=R6"/>
+<org.eventb.core.prPred name="p169" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p165" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p149" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=L"/>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R7"/>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬E=M"/>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=H"/>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=J"/>
+<org.eventb.core.prPred name="p171" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=D"/>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=G"/>
+<org.eventb.core.prPred name="p155" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=L"/>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬E=N"/>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=G"/>
+<org.eventb.core.prPred name="p146" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R6=R7"/>
+<org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R5=R10"/>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬G=N"/>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬B=N"/>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬A=M"/>
+<org.eventb.core.prPred name="p150" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+<org.eventb.core.prPred name="p148" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R8=R9"/>
+<org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R9"/>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="¬L=N"/>
+<org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R8"/>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬J=N"/>
+<org.eventb.core.prPred name="p167" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p179" org.eventb.core.predicate="nxt∈{R1,R2,R3,R4,R5,R6,R7,R8,R9,R10} ⇸ ℙ({A,B,C,D,E,F,G,H,I,J,K,L,M,N} × {A,B,C,D,E,F,G,H,I,J,K,L,M,N})"/>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬D=M"/>
+<org.eventb.core.prPred name="p156" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p177" org.eventb.core.predicate="r∈dom(nxt)∧nxt∈{R1,R2,R3,R4,R5,R6,R7,R8,R9,R10} ⇸ ℙ({A,B,C,D,E,F,G,H,I,J,K,L,M,N} × {A,B,C,D,E,F,G,H,I,J,K,L,M,N})"/>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R9"/>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬C=M"/>
+<org.eventb.core.prPred name="p166" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬F=M"/>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=E"/>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=J"/>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R9"/>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R8"/>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=E"/>
+<org.eventb.core.prPred name="p168" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R6=R10"/>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=K"/>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R5"/>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=F"/>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=H"/>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=J"/>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=H"/>
+<org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R6"/>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬A=N"/>
+<org.eventb.core.prPred name="p173" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R8"/>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=I"/>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=H"/>
+<org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R4=R10"/>
+<org.eventb.core.prPred name="p158" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=E"/>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬J=M"/>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R3"/>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=K"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=J"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=K"/>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R3=R4"/>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=L"/>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R6"/>
+<org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R7=R8"/>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=G"/>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬I=M"/>
+<org.eventb.core.prPred name="p154" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=F"/>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=J"/>
+<org.eventb.core.prPred name="p153" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬G=M"/>
+<org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬C=N"/>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=I"/>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬H=N"/>
+<org.eventb.core.prPred name="p175" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=I"/>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=K"/>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬K=N"/>
+<org.eventb.core.prPred name="p145" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R7"/>
+<org.eventb.core.prPred name="p170" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=E"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_formation/inv1/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139,p140"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p94"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139,p140"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p149">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p141" org.eventb.core.prInfHyps="p142"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p141"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p143" org.eventb.core.prInfHyps="p144"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p143"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p145" org.eventb.core.prInfHyps="p146"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p145"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p147" org.eventb.core.prInfHyps="p148"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p147"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p150"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p151" org.eventb.core.prInfHyps="p152"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p151"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p153" org.eventb.core.prInfHyps="p154"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p153"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p155"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p156"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p157" org.eventb.core.prInfHyps="p158"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p157"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p159" org.eventb.core.prInfHyps="p160"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p159"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p161" org.eventb.core.prInfHyps="p162"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p161"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p163" org.eventb.core.prInfHyps="p164"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p163"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p165"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p142"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p144" org.eventb.core.prInfHyps="p166"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p144"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p167"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p146"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p152" org.eventb.core.prInfHyps="p168"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p152"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p154" org.eventb.core.prInfHyps="p169"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p154"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p158" org.eventb.core.prInfHyps="p170"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p158"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p160" org.eventb.core.prInfHyps="p171"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p160"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p162" org.eventb.core.prInfHyps="p172"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p162"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p164" org.eventb.core.prInfHyps="p173"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p164"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p165" org.eventb.core.prInfHyps="p174"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p165"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p166" org.eventb.core.prInfHyps="p175"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p166"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p167" org.eventb.core.prInfHyps="p176"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p167"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prPred name="p160" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=K">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=M">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R9">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p164" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬D=N">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=J">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p158" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=L">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=J">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R8=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p149" org.eventb.core.predicate="rdy⊆frm∪{r}"/>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=J">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬L=M">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R2=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=L">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=K">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=M">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬F=N">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬J=K">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p175" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p162" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=L">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R9">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=K">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬K=L">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬I=N">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=L">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R9">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p173" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R9">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=M">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=K">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="¬M=N">
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R7=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R3=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬I=J">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p163" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=L">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=L">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=K">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p153" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p165" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p140" org.eventb.core.predicate="¬R9=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R1=R10">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=L">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p161" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p170" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p166" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p150" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=L">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=M">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=J">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p172" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p156" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=L">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬E=N">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p146" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R5=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬G=N">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬B=N">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=M">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p148" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R8=R9">
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R9">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="rdy∪{r}⊆frm∪{r}"/>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬L=N">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬J=N">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p168" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=M">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p157" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R9">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=M">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p167" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=M">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=J">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R9">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p169" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R6=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=K">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=J">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬A=N">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p174" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R4=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p159" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=M">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=K">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=J">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=K">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=L">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=M">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p155" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=J">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p154" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=M">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬C=N">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬H=N">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p176" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=K">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬K=N">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p145" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p171" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_formation/inv2/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="r0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.psManual="true">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p3"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p5"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p8"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p7"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p9"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p14"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p15"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p18"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p21"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p20"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p23"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p22"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p24"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p2"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p25"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p4"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p26"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p6"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p27"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p28"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p13"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p29"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p17"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p30"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p19"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p31"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p21"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p32"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p23"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p33"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p24"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p34"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p25"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p35"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p26"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p37"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="rtbl ▷ {r0}=rsrtbl ▷ {r0}">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈rdy∪{r}⇒rtbl ▷ {r0}=rsrtbl ▷ {r0}"/>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="r0∈rdy∪{r}⇒rtbl ▷ {r0}=rsrtbl ▷ {r0}">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="r0∈rdy∪{r}">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_formation/inv3/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="r0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.psManual="true">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p3"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p5"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p8"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p7"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p9"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p12"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p14"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p15"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p16"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p18"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p21"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p20"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p23"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p22"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p24"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p2"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p25"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p4"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p26"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p6"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p27"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p28"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p13"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p29"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p17"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p30"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p19"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p31"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p21"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p32"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p23"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p33"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p24"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p34"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p25"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p35"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p26"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p37"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="dom(rtbl ▷ {r0})∩OCC=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="r0∈rdy∪{r}">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈rdy∪{r}⇒dom(rtbl ▷ {r0})∩OCC=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="r0∈rdy∪{r}⇒dom(rtbl ▷ {r0})∩OCC=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_formation/frm/EQL" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p93"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p140" org.eventb.core.prInfHyps="p141"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p140"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p143"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p142"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p144" org.eventb.core.prInfHyps="p145"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p144"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p147"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p146"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p148"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p149" org.eventb.core.prInfHyps="p150"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p149"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p151" org.eventb.core.prInfHyps="p152"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p151"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p153"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p154"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p155" org.eventb.core.prInfHyps="p156"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p155"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p157" org.eventb.core.prInfHyps="p158"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p157"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p159" org.eventb.core.prInfHyps="p160"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p159"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p161" org.eventb.core.prInfHyps="p162"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p161"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p141" org.eventb.core.prInfHyps="p163"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p141"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p143" org.eventb.core.prInfHyps="p164"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p143"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p145" org.eventb.core.prInfHyps="p165"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p145"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p166"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p150"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p152" org.eventb.core.prInfHyps="p167"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p152"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p156" org.eventb.core.prInfHyps="p168"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p156"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p158" org.eventb.core.prInfHyps="p169"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p158"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p160" org.eventb.core.prInfHyps="p170"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p160"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p162" org.eventb.core.prInfHyps="p171"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p162"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p163" org.eventb.core.prInfHyps="p172"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p163"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p164" org.eventb.core.prInfHyps="p173"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p164"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p165" org.eventb.core.prInfHyps="p174"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p165"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prPred name="p158" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬I=K">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬K=M">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R7=R9">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p162" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=N">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=J">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p156" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p150" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=L">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=J">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R8=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=J">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬L=M">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=L">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=K">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=M">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=N">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬J=K">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p173" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p160" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=L">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R9">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=K">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬K=L">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=N">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=L">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R9">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p171" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R9">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=M">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=K">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬M=N">
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p140" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬I=J">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p161" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=L">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=L">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=K">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p163" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R9=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R10">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=L">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p159" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p168" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p164" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p148" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=L">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=M">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬H=J">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p170" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p154" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=L">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=N">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p145" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=N">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=N">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=M">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p149" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R8=R9">
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R9">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬L=N">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=N">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p166" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=M">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p155" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R9">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=M">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p165" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=M">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=J">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R9">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p167" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=K">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=J">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=N">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p172" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p157" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=M">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=K">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=J">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=K">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬J=L">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=M">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p153" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=J">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=M">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p146" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=N">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=N">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p174" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=K">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=N">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p169" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="inv1/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p93"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p140" org.eventb.core.prInfHyps="p141"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p140"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p143"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p142"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p144" org.eventb.core.prInfHyps="p145"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p144"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p147"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p146"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p148"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p149" org.eventb.core.prInfHyps="p150"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p149"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p151" org.eventb.core.prInfHyps="p152"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p151"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p153"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p154"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p155" org.eventb.core.prInfHyps="p156"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p155"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p157" org.eventb.core.prInfHyps="p158"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p157"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p159" org.eventb.core.prInfHyps="p160"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p159"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p161" org.eventb.core.prInfHyps="p162"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p161"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p141" org.eventb.core.prInfHyps="p163"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p141"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p143" org.eventb.core.prInfHyps="p164"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p143"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p145" org.eventb.core.prInfHyps="p165"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p145"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p166"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p150"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p152" org.eventb.core.prInfHyps="p167"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p152"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p156" org.eventb.core.prInfHyps="p168"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p156"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p158" org.eventb.core.prInfHyps="p169"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p158"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p160" org.eventb.core.prInfHyps="p170"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p160"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p162" org.eventb.core.prInfHyps="p171"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p162"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p163" org.eventb.core.prInfHyps="p172"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p163"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p164" org.eventb.core.prInfHyps="p173"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p164"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p165" org.eventb.core.prInfHyps="p174"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p165"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prPred name="p158" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬I=K">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬K=M">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R7=R9">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p162" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=N">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=J">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p156" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p150" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=L">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=J">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R8=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=J">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬L=M">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=L">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=K">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=M">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=N">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬J=K">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p173" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p160" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=L">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R9">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=K">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬K=L">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=N">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=L">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R9">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p171" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R9">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=M">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=K">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬M=N">
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p140" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬I=J">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p161" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=L">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=L">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=K">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p163" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R9=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R10">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=L">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p159" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p168" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p164" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p148" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=L">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=M">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬H=J">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p170" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p154" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=L">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=N">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p145" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=N">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=N">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=M">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p149" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R8=R9">
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R9">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬L=N">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=N">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p166" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=M">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p155" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R9">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=M">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p165" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=M">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=J">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R9">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p167" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=K">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=J">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=N">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p172" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p157" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=M">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=K">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=J">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=K">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬J=L">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=M">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p153" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=J">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=M">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p146" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=N">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=N">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p174" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=K">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=N">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p169" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="INITIALISATION/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="⊤"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(ROUTES))⊆(∅ ⦂ ℙ(ROUTES))"/>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_freeing/inv4/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="" org.eventb.core.psManual="true">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p2"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p4"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p6"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p8"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p9"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p12"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p11"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p14"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p16"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p15"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p17"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p19"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p21"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p23"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p24"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p3"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p25"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p5"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p26"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p27"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p12"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p28"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p16"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p29"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p18"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p30"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p20"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p31"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p22"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p32"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p23"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p33"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p24"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p34"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p25"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="FRONT_MOVE_1/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38" org.eventb.core.prSets="BLOCKS,ROUTES">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p39"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p29"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p40"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p28"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p41"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p42"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p43"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p44"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p7"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p45"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p46"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p47"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p48"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p23"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p49"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p38"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p50"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p30"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p51"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p3"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p52"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p39"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p53"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p40"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p54"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p41"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p55"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p44"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p56"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p45"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p48"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p58"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p49"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p59"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p50"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p60"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p51"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p61"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p52"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p62"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p53"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p63"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p54"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p14,p21,p26,p10,p15,p6,p8,p33,p18,p20,p2,p25,p1,p9,p27,p22,p5,p34,p36,p31,p24,p35,p12,p19,p32,p37,p11,p42,p55,p56,p57,p58,p59,p60,p61,p62,p63">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="lst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="resrt⊆ROUTES"/>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="rsrtbl∈BLOCKS ⇸ ROUTES"/>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="rsrtbl(fst(r))=r"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="OCC⊆resbl"/>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="rdy⊆frm"/>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="fst(r)∈dom(rsrtbl)"/>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="frm⊆resrt"/>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="fst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="r∈dom(fst)"/>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="LBT⊆OCC"/>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="rdy ∖ {r}⊆frm"/>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="r∈rdy"/>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_formation/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36" org.eventb.core.prSets="BLOCKS,ROUTES">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p37"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p38"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p26"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p39"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p12"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p40"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p15"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p42"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p43"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p8"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p44"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p16"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p45"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p46"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p47"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p21"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p48"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p36"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p49"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p28"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p50"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p4"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p51"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p37"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p52"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p38"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p53"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p39"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p54"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p43"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p55"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p44"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p56"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p47"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p57"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p48"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p58"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p49"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p59"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p50"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p60"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p51"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p61"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p52"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p62"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p53"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p5,p13,p19,p24,p11,p14,p7,p9,p30,p17,p18,p3,p23,p1,p10,p25,p20,p6,p31,p33,p29,p22,p34,p32,p35,p2,p40,p54,p55,p56,p57,p58,p59,p60,p61,p62">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="lst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="resrt⊆ROUTES"/>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="rdy∪{r}⊆frm∪{r}"/>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="OCC⊆resbl"/>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="rdy⊆frm∪{r}"/>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="rdy⊆frm"/>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="r∈resrt ∖ frm"/>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="frm⊆resrt"/>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="fst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="LBT⊆OCC"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="r∈dom(nxt)"/>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_formation2/grd2/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS,ROUTES">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139,p140"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139,p140"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p141" org.eventb.core.prInfHyps="p142"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p141"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p143" org.eventb.core.prInfHyps="p144"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p143"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p145" org.eventb.core.prInfHyps="p146"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p145"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p147" org.eventb.core.prInfHyps="p148"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p147"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p149"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p151"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p150"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p152" org.eventb.core.prInfHyps="p153"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p152"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p154"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p155"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p156" org.eventb.core.prInfHyps="p157"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p156"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p158" org.eventb.core.prInfHyps="p159"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p158"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p160" org.eventb.core.prInfHyps="p161"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p160"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p162" org.eventb.core.prInfHyps="p163"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p162"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p164"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p142"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p144" org.eventb.core.prInfHyps="p165"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p144"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p166"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p146"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p151" org.eventb.core.prInfHyps="p167"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p151"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p153" org.eventb.core.prInfHyps="p168"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p153"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p157" org.eventb.core.prInfHyps="p169"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p157"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p159" org.eventb.core.prInfHyps="p170"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p159"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p161" org.eventb.core.prInfHyps="p171"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p161"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p163" org.eventb.core.prInfHyps="p172"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p163"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p164" org.eventb.core.prInfHyps="p173"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p164"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p165" org.eventb.core.prInfHyps="p174"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p165"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p166" org.eventb.core.prInfHyps="p175"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p166"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N})" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p176">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps=""/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10})" org.eventb.core.prGoal="p176" org.eventb.core.prHyps="p95">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p177">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps=""/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p177" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p178"/>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p179"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p95"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p3"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prPred name="p159" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=D"/>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=F"/>
+<org.eventb.core.prPred name="p176" org.eventb.core.predicate="r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ({A,B,C,D,E,F,G,H,I,J,K,L,M,N} × {A,B,C,D,E,F,G,H,I,J,K,L,M,N})"/>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=K"/>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬K=M"/>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=H"/>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R6"/>
+<org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R9"/>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=B"/>
+<org.eventb.core.prPred name="p163" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬D=N"/>
+<org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R5"/>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=J"/>
+<org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p157" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=L"/>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=J"/>
+<org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R8=R10"/>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R4"/>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=F"/>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=J"/>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬L=M"/>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R2=R10"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=L"/>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R7"/>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=K"/>
+<org.eventb.core.prPred name="p178" org.eventb.core.predicate="r∈dom(nxt)"/>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=C"/>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=G"/>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬H=M"/>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬F=N"/>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=K"/>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=I"/>
+<org.eventb.core.prPred name="p174" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p161" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=L"/>
+<org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R9"/>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R6"/>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=D"/>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=K"/>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=G"/>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=L"/>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=I"/>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬I=N"/>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R8"/>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=L"/>
+<org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R9"/>
+<org.eventb.core.prPred name="p172" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R9"/>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R2=R3"/>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R5"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬B=M"/>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=K"/>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}"/>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬R1=R2"/>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="¬M=N"/>
+<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R7"/>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}"/>
+<org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R7=R10"/>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=F"/>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=I"/>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R3=R10"/>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=J"/>
+<org.eventb.core.prPred name="p162" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=I"/>
+<org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R4=R5"/>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=L"/>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=L"/>
+<org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R8"/>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R4"/>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})"/>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R8"/>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=I"/>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=K"/>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=H"/>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=H"/>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=C"/>
+<org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p164" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p140" org.eventb.core.predicate="¬R9=R10"/>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R1=R10"/>
+<org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R7"/>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=G"/>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=L"/>
+<org.eventb.core.prPred name="p160" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R5=R6"/>
+<org.eventb.core.prPred name="p169" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p165" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p149" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=L"/>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R7"/>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬E=M"/>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=H"/>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=J"/>
+<org.eventb.core.prPred name="p171" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=D"/>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=G"/>
+<org.eventb.core.prPred name="p155" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=L"/>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬E=N"/>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=G"/>
+<org.eventb.core.prPred name="p146" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R6=R7"/>
+<org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R5=R10"/>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬G=N"/>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬B=N"/>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬A=M"/>
+<org.eventb.core.prPred name="p150" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+<org.eventb.core.prPred name="p148" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R8=R9"/>
+<org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R9"/>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="¬L=N"/>
+<org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R8"/>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬J=N"/>
+<org.eventb.core.prPred name="p167" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p179" org.eventb.core.predicate="nxt∈{R1,R2,R3,R4,R5,R6,R7,R8,R9,R10} ⇸ ℙ({A,B,C,D,E,F,G,H,I,J,K,L,M,N} × {A,B,C,D,E,F,G,H,I,J,K,L,M,N})"/>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬D=M"/>
+<org.eventb.core.prPred name="p156" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p177" org.eventb.core.predicate="r∈dom(nxt)∧nxt∈{R1,R2,R3,R4,R5,R6,R7,R8,R9,R10} ⇸ ℙ({A,B,C,D,E,F,G,H,I,J,K,L,M,N} × {A,B,C,D,E,F,G,H,I,J,K,L,M,N})"/>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R9"/>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬C=M"/>
+<org.eventb.core.prPred name="p166" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬F=M"/>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=E"/>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=J"/>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R9"/>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R8"/>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=E"/>
+<org.eventb.core.prPred name="p168" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R6=R10"/>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=K"/>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R5"/>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=F"/>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=H"/>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=J"/>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=H"/>
+<org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R6"/>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬A=N"/>
+<org.eventb.core.prPred name="p173" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R8"/>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=I"/>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=H"/>
+<org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R4=R10"/>
+<org.eventb.core.prPred name="p158" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=E"/>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬J=M"/>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R3"/>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=K"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=J"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=K"/>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R3=R4"/>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=L"/>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R6"/>
+<org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R7=R8"/>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=G"/>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬I=M"/>
+<org.eventb.core.prPred name="p154" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=F"/>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=J"/>
+<org.eventb.core.prPred name="p153" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬G=M"/>
+<org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬C=N"/>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=I"/>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬H=N"/>
+<org.eventb.core.prPred name="p175" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=I"/>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=K"/>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬K=N"/>
+<org.eventb.core.prPred name="p145" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R7"/>
+<org.eventb.core.prPred name="p170" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=E"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_formation2/inv4/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139,p140"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p94"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139,p140"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p149">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p141" org.eventb.core.prInfHyps="p142"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p141"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p143" org.eventb.core.prInfHyps="p144"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p143"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p145" org.eventb.core.prInfHyps="p146"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p145"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p147" org.eventb.core.prInfHyps="p148"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p147"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p150"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p151" org.eventb.core.prInfHyps="p152"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p151"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p153" org.eventb.core.prInfHyps="p154"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p153"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p155"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p156"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p157" org.eventb.core.prInfHyps="p158"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p157"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p159" org.eventb.core.prInfHyps="p160"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p159"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p161" org.eventb.core.prInfHyps="p162"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p161"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p163" org.eventb.core.prInfHyps="p164"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p163"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p165"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p142"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p144" org.eventb.core.prInfHyps="p166"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p144"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p167"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p146"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p152" org.eventb.core.prInfHyps="p168"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p152"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p154" org.eventb.core.prInfHyps="p169"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p154"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p158" org.eventb.core.prInfHyps="p170"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p158"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p160" org.eventb.core.prInfHyps="p171"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p160"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p162" org.eventb.core.prInfHyps="p172"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p162"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p164" org.eventb.core.prInfHyps="p173"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p164"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p165" org.eventb.core.prInfHyps="p174"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p165"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p166" org.eventb.core.prInfHyps="p175"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p166"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p167" org.eventb.core.prInfHyps="p176"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p167"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prPred name="p160" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=K">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=M">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R9">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p164" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬D=N">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=J">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p158" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=L">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=J">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R8=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p149" org.eventb.core.predicate="rdy⊆frm∪{r}"/>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=J">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬L=M">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R2=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=L">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=K">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=M">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬F=N">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬J=K">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p175" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p162" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=L">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R9">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=K">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬K=L">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬I=N">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=L">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R9">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p173" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R9">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=M">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=K">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="¬M=N">
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R7=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R3=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬I=J">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p163" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=L">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=L">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=K">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p153" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p165" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p140" org.eventb.core.predicate="¬R9=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R1=R10">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=L">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p161" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p170" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p166" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p150" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=L">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=M">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=J">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p172" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p156" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=L">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬E=N">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p146" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R5=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬G=N">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬B=N">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=M">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p148" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R8=R9">
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R9">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="rdy∪{r}⊆frm∪{r}"/>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬L=N">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬J=N">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p168" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=M">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p157" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R9">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=M">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p167" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=M">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=J">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R9">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p169" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R6=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=K">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=J">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬A=N">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p174" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R4=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p159" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=M">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=K">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=J">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=K">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=L">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=M">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p155" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=J">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p154" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=M">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬C=N">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬H=N">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p176" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=K">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬K=N">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p145" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p171" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_formation2/inv2/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="r0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139,p140"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p94"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139,p140"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p141" org.eventb.core.prInfHyps="p142"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p141"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p143" org.eventb.core.prInfHyps="p144"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p143"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p145" org.eventb.core.prInfHyps="p146"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p145"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p147" org.eventb.core.prInfHyps="p148"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p147"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p149"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p151"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p150"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p152" org.eventb.core.prInfHyps="p153"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p152"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p154"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p155"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p156" org.eventb.core.prInfHyps="p157"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p156"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p158" org.eventb.core.prInfHyps="p159"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p158"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p160" org.eventb.core.prInfHyps="p161"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p160"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p162" org.eventb.core.prInfHyps="p163"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p162"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p164"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p142"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p144" org.eventb.core.prInfHyps="p165"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p144"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p166"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p146"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p151" org.eventb.core.prInfHyps="p167"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p151"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p153" org.eventb.core.prInfHyps="p168"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p153"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p157" org.eventb.core.prInfHyps="p169"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p157"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p159" org.eventb.core.prInfHyps="p170"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p159"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p161" org.eventb.core.prInfHyps="p171"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p161"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p163" org.eventb.core.prInfHyps="p172"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p163"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p164" org.eventb.core.prInfHyps="p173"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p164"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p165" org.eventb.core.prInfHyps="p174"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p165"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p166" org.eventb.core.prInfHyps="p175"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p166"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p176">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.impI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p176" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p178" org.eventb.core.prHyps="p177"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prPred name="p159" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=K">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=M">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R9">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p176" org.eventb.core.predicate="r0∈rdy∪{r}⇒rtbl ▷ {r0}=rsrtbl ▷ {r0}">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p163" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬D=N">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=J">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p157" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=L">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=J">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R8=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=J">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬L=M">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R2=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=L">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=K">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=M">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬F=N">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬J=K">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p174" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p161" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=L">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R9">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=K">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬K=L">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬I=N">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=L">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R9">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p172" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R9">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=M">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=K">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="¬M=N">
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R7=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R3=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬I=J">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p162" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=L">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=L">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=K">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p164" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p140" org.eventb.core.predicate="¬R9=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R1=R10">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=L">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p160" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p169" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p165" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p149" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=L">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=M">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=J">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p171" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p155" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=L">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬E=N">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p146" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R5=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬G=N">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬B=N">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=M">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p150" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p148" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R8=R9">
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R9">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬L=N">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬J=N">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p167" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=M">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p156" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R9">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=M">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p166" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=M">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=J">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R9">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p168" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R6=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=K">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=J">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬A=N">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p173" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R4=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p158" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=M">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=K">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=J">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=K">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=L">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=M">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p154" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p178" org.eventb.core.predicate="rtbl ▷ {r0}=rsrtbl ▷ {r0}">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=J">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p153" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=M">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬C=N">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬H=N">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p175" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=K">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬K=N">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p145" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p177" org.eventb.core.predicate="r0∈rdy∪{r}">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p170" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈rdy∪{r}⇒rtbl ▷ {r0}=rsrtbl ▷ {r0}"/>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_formation2/inv3/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="r0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139,p140"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p94"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139,p140"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p141" org.eventb.core.prInfHyps="p142"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p141"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p143" org.eventb.core.prInfHyps="p144"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p143"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p145" org.eventb.core.prInfHyps="p146"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p145"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p147" org.eventb.core.prInfHyps="p148"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p147"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p149"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p151"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p150"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p152" org.eventb.core.prInfHyps="p153"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p152"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p154"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p155"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p156" org.eventb.core.prInfHyps="p157"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p156"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p158" org.eventb.core.prInfHyps="p159"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p158"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p160" org.eventb.core.prInfHyps="p161"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p160"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p162" org.eventb.core.prInfHyps="p163"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p162"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p164"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p142"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p144" org.eventb.core.prInfHyps="p165"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p144"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p166"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p146"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p151" org.eventb.core.prInfHyps="p167"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p151"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p153" org.eventb.core.prInfHyps="p168"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p153"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p157" org.eventb.core.prInfHyps="p169"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p157"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p159" org.eventb.core.prInfHyps="p170"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p159"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p161" org.eventb.core.prInfHyps="p171"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p161"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p163" org.eventb.core.prInfHyps="p172"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p163"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p164" org.eventb.core.prInfHyps="p173"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p164"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p165" org.eventb.core.prInfHyps="p174"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p165"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p166" org.eventb.core.prInfHyps="p175"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p166"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p176">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.impI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p176" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p178" org.eventb.core.prHyps="p177"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prPred name="p159" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=K">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=M">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R9">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p163" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬D=N">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=J">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p157" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=L">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=J">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R8=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=J">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬L=M">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R2=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=L">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=K">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=M">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬F=N">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬J=K">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p174" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p161" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=L">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R9">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=K">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬K=L">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p176" org.eventb.core.predicate="r0∈rdy∪{r}⇒dom(rtbl ▷ {r0})∩OCC=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬I=N">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=L">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R9">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p172" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R9">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=M">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=K">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="¬M=N">
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R7=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R3=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬I=J">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p162" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=L">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=L">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=K">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p164" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p140" org.eventb.core.predicate="¬R9=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R1=R10">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=L">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p160" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p169" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p165" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p149" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=L">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=M">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r0⦂ROUTES·r0∈rdy∪{r}⇒dom(rtbl ▷ {r0})∩OCC=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=J">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p171" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p155" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=L">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬E=N">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p146" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R5=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬G=N">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬B=N">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=M">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p150" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p148" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R8=R9">
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R9">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬L=N">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬J=N">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p167" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=M">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p156" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R9">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=M">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p166" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=M">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=J">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R9">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p168" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R6=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p178" org.eventb.core.predicate="dom(rtbl ▷ {r0})∩OCC=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=K">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=J">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬A=N">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p173" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R4=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p158" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=M">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=K">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=J">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=K">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=L">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=M">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p154" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=J">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p153" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=M">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬C=N">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬H=N">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p175" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=K">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬K=N">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p145" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p177" org.eventb.core.predicate="r0∈rdy∪{r}">
+<org.eventb.core.prIdent name="r0" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p170" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_formation2/frm/EQL" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p93"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p140" org.eventb.core.prInfHyps="p141"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p140"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p143"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p142"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p144" org.eventb.core.prInfHyps="p145"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p144"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p147"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p146"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p148"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p149" org.eventb.core.prInfHyps="p150"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p149"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p151" org.eventb.core.prInfHyps="p152"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p151"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p153"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p154"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p155" org.eventb.core.prInfHyps="p156"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p155"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p157" org.eventb.core.prInfHyps="p158"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p157"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p159" org.eventb.core.prInfHyps="p160"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p159"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p161" org.eventb.core.prInfHyps="p162"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p161"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p141" org.eventb.core.prInfHyps="p163"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p141"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p143" org.eventb.core.prInfHyps="p164"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p143"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p145" org.eventb.core.prInfHyps="p165"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p145"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p166"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p150"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p152" org.eventb.core.prInfHyps="p167"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p152"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p156" org.eventb.core.prInfHyps="p168"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p156"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p158" org.eventb.core.prInfHyps="p169"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p158"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p160" org.eventb.core.prInfHyps="p170"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p160"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p162" org.eventb.core.prInfHyps="p171"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p162"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p163" org.eventb.core.prInfHyps="p172"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p163"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p164" org.eventb.core.prInfHyps="p173"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p164"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p165" org.eventb.core.prInfHyps="p174"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p165"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prPred name="p158" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬I=K">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬K=M">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R7=R9">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p162" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=N">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=J">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p156" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p150" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=L">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=J">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R8=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=J">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬L=M">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=L">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=K">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=M">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=N">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬J=K">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p173" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p160" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=L">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R9">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=K">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬K=L">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=N">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=L">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R9">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p171" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R9">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=M">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=K">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬M=N">
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p140" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬I=J">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p161" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=L">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=L">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=K">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p163" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R9=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R10">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=L">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p159" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p168" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p164" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p148" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=L">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=M">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬H=J">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p170" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p154" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=L">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=N">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p145" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=N">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=N">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=M">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p149" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R8=R9">
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R9">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬L=N">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=N">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p166" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=M">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p155" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R9">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=M">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p165" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=M">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=J">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R9">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p167" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=K">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=J">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=N">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p172" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p157" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=M">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=K">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=J">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=K">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬J=L">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=M">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p153" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=J">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=M">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p146" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=N">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=N">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p174" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=K">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=N">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p169" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="inv4/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p69"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p68"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p70"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p72"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p74"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p77"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p76"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p78"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p80"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p79"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p82"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p81"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p83"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p84"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p86"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p85"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p88"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p87"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p90"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p89"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p92"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p91"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p93"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p69"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p94"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p71"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p95"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p73"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p96"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p80"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p97"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p82"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p98"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p86"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p99"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p88"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p100"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p90"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p101"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p92"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p102"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p93"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p103"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p94"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p104"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p95"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="inv2/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p78"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p77"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p79"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p81"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p80"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p83"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p82"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p84"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p85"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p87"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p86"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p89"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p88"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p91"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p90"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p93"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p92"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p94"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p70"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p95"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p72"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p96"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p74"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p97"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p81"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p98"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p83"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p99"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p87"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p100"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p89"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p101"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p91"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p102"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p93"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p103"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p94"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p104"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p95"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p105"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p96"/>
+<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p106">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p106" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p108" org.eventb.core.prHyps="p107"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="rtbl ▷ {r}=rsrtbl ▷ {r}">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="r∈rdy">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="inv3/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p71"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p73"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p75"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p78"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p77"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p79"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p81"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p80"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p83"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p82"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p84"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p85"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p87"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p86"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p89"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p88"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p91"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p90"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p93"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p92"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p94"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p70"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p95"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p72"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p96"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p74"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p97"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p81"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p98"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p83"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p99"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p87"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p100"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p89"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p101"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p91"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p102"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p93"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p103"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p94"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p104"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p95"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p105"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p96"/>
+<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p106">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p106" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p108" org.eventb.core.prHyps="p107"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="r∈rdy">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="FRONT_MOVE_1/act1/WD"/>
+<org.eventb.core.prProof name="FRONT_MOVE_1/act2/WD"/>
+<org.eventb.core.prProof name="FRONT_MOVE_2/act1/WD"/>
+<org.eventb.core.prProof name="BACK_MOVE_2/act4/WD"/>
+</org.eventb.core.prFile>
diff --git a/Train_B_Book/train_2.bps b/Train_B_Book/train_2.bps
new file mode 100644
index 0000000000000000000000000000000000000000..abf22efa372f31b338b11e1cec2d0814c17f0581
--- /dev/null
+++ b/Train_B_Book/train_2.bps
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.psFile>
+    <org.eventb.core.psStatus name="INITIALISATION/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="INITIALISATION/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="INITIALISATION/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="route_reservation/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="route_freeing/inv4/INV" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/grd2/WD" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/grd1/GRD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/grd2/GRD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_2/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_1/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_1/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_2/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="BACK_MOVE_2/inv3/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="route_formation/inv4/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="route_formation/inv2/INV" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="route_formation/inv3/INV" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="true"/>
+</org.eventb.core.psFile>
diff --git a/Train_B_Book/train_2.bum b/Train_B_Book/train_2.bum
new file mode 100644
index 0000000000000000000000000000000000000000..c6ba300c7d3e3edf524fbcb8703a5fca2dd4b4bd
--- /dev/null
+++ b/Train_B_Book/train_2.bum
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.machineFile org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter" org.eventb.texttools.text_lastmodified="1390827533773" org.eventb.texttools.text_representation="machine train_2 //&#10; refines train_1  sees train_ctx0&#10;&#10;variables resrt // set of reserved routes&#10;          resbl // set of reserved blocks&#10;          rsrtbl // reserved route of reserved block&#10;          OCC // occupied block&#10;          TRK // physical track&#10;          frm // set of formed routes&#10;          LBT // last block of the train&#10;          rdy // ready routes: ready for accepting a train&#10;&#10;invariants&#10;   @inv4 rdy ⊆ frm&#10;   @inv2 ∀r·r∈rdy ⇒ rtbl▷{r}= rsrtbl▷{r} // all blocks reserved for a ready route&#10;   @inv3 ∀r·r∈rdy ⇒ dom(rtbl▷{r})∩OCC=∅ // no block of a ready route is occupied&#10;&#10;events&#10;  event INITIALISATION&#10;    then&#10;      @act1 resrt ≔ ∅&#10;      @act2 resbl ≔ ∅&#10;      @act3 rsrtbl ≔ ∅&#10;      @act4 OCC ≔ ∅&#10;      @act5 TRK ≔ ∅&#10;      @act6 frm ≔ ∅&#10;      @act7 LBT ≔ ∅&#10;      @act8 rdy ≔ ∅&#10;  end&#10;&#10;  event route_reservation extends route_reservation&#10;  end&#10;&#10;  event route_freeing extends route_freeing&#10;  end&#10;&#10;  event FRONT_MOVE_1 // the train enters its route&#10;  refines FRONT_MOVE_1&#10;    any r&#10;    where&#10;      @grd1 r ∈ rdy // was r:frm in train_1&#10;      @grd2 rsrtbl(fst(r)) = r&#10;    then&#10;      @act1 OCC ≔ OCC ∪ {fst(r)}&#10;      @act2 LBT ≔ LBT ∪ {fst(r)}&#10;      @act3 rdy ≔ rdy ∖ {r}&#10;  end&#10;&#10;  event FRONT_MOVE_2 // the front of the train moves&#10;  extends FRONT_MOVE_2&#10;  end&#10;&#10;  event BACK_MOVE_1 // the train leaves its route&#10;  extends BACK_MOVE_1&#10;  end&#10;&#10;  event BACK_MOVE_2 // the back of the train moves&#10;  extends BACK_MOVE_2&#10;  end&#10;&#10;  event point_positionning extends point_positionning&#10;  end&#10;&#10;  event route_formation extends route_formation&#10;  begin&#10;      @act3 rdy≔rdy∪{r}&#10;  end&#10;end&#10;" version="5">
+<org.eventb.core.refinesMachine name="internal_refinesMachine1" org.eventb.core.target="train_1"/>
+<org.eventb.core.seesContext name="internal_sees1" org.eventb.core.target="train_ctx0"/>
+<org.eventb.core.event name="internal_evt1" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="INITIALISATION">
+<org.eventb.core.action name="internal_act1" org.eventb.core.assignment="resrt ≔ ∅" org.eventb.core.label="act1"/>
+<org.eventb.core.action name="internal_act2" org.eventb.core.assignment="resbl ≔ ∅" org.eventb.core.label="act2"/>
+<org.eventb.core.action name="internal_act3" org.eventb.core.assignment="rsrtbl ≔ ∅" org.eventb.core.label="act3"/>
+<org.eventb.core.action name="internal_act4" org.eventb.core.assignment="OCC ≔ ∅" org.eventb.core.label="act4"/>
+<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="TRK ≔ ∅" org.eventb.core.label="act5"/>
+<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="frm ≔ ∅" org.eventb.core.label="act6"/>
+<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="LBT ≔ ∅" org.eventb.core.label="act7"/>
+<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="rdy ≔ ∅" org.eventb.core.label="act8"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element1" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation">
+<org.eventb.core.refinesEvent name="internal_refinesEvent1" org.eventb.core.target="route_reservation"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element2" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing">
+<org.eventb.core.refinesEvent name="internal_refinesEvent1" org.eventb.core.target="route_freeing"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element3" org.eventb.core.comment="the train enters its route" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="FRONT_MOVE_1">
+<org.eventb.core.refinesEvent name="_y_4soYdREeO1KoWHc0_rvw" org.eventb.core.target="FRONT_MOVE_1"/>
+<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="r"/>
+<org.eventb.core.guard name="internal_element1" org.eventb.core.comment="was r:frm in train_1" org.eventb.core.label="grd1" org.eventb.core.predicate="r ∈ rdy"/>
+<org.eventb.core.guard name="internal_element2" org.eventb.core.label="grd2" org.eventb.core.predicate="rsrtbl(fst(r)) = r"/>
+<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="OCC ≔ OCC ∪ {fst(r)}" org.eventb.core.label="act1"/>
+<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="LBT ≔ LBT ∪ {fst(r)}" org.eventb.core.label="act2"/>
+<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="rdy ≔ rdy ∖ {r}" org.eventb.core.label="act3"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element4" org.eventb.core.comment="the front of the train moves" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_2">
+<org.eventb.core.refinesEvent name="_y_6h0IdREeO1KoWHc0_rvw" org.eventb.core.target="FRONT_MOVE_2"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element5" org.eventb.core.comment="the train leaves its route" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_1">
+<org.eventb.core.refinesEvent name="internal_refinesEvent1" org.eventb.core.target="BACK_MOVE_1"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element6" org.eventb.core.comment="the back of the train moves" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_2">
+<org.eventb.core.refinesEvent name="internal_refinesEvent1" org.eventb.core.target="BACK_MOVE_2"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_evt2" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="point_positionning">
+<org.eventb.core.refinesEvent name="internal_element1" org.eventb.core.target="point_positionning"/>
+</org.eventb.core.event>
+<org.eventb.core.invariant name="internal_refinesMachine3" org.eventb.core.label="inv4" org.eventb.core.predicate="rdy ⊆ frm"/>
+<org.eventb.core.invariant name="internal_element2I" org.eventb.core.comment="all blocks reserved for a ready route" org.eventb.core.label="inv2" org.eventb.core.predicate="∀r·r∈rdy ⇒ rtbl▷{r}= rsrtbl▷{r}"/>
+<org.eventb.core.invariant name="internal_element3I" org.eventb.core.comment="no block of a ready route is occupied" org.eventb.core.label="inv3" org.eventb.core.predicate="∀r·r∈rdy ⇒ dom(rtbl▷{r})∩OCC=∅"/>
+<org.eventb.core.variable name="internal_var1" org.eventb.core.comment="set of reserved routes" org.eventb.core.identifier="resrt"/>
+<org.eventb.core.variable name="internal_var2" org.eventb.core.comment="set of reserved blocks" org.eventb.core.identifier="resbl"/>
+<org.eventb.core.variable name="internal_var3" org.eventb.core.comment="reserved route of reserved block" org.eventb.core.identifier="rsrtbl"/>
+<org.eventb.core.variable name="internal_var4" org.eventb.core.comment="occupied block" org.eventb.core.identifier="OCC"/>
+<org.eventb.core.variable name="internal_element1" org.eventb.core.comment="physical track" org.eventb.core.identifier="TRK"/>
+<org.eventb.core.variable name="internal_element2" org.eventb.core.comment="set of formed routes" org.eventb.core.identifier="frm"/>
+<org.eventb.core.variable name="internal_element3" org.eventb.core.comment="last block of the train" org.eventb.core.identifier="LBT"/>
+<org.eventb.core.variable name="internal_element4" org.eventb.core.comment="ready routes: ready for accepting a train" org.eventb.core.identifier="rdy"/>
+<org.eventb.core.event name="internal_refinesMachine2" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_formation">
+<org.eventb.core.refinesEvent name="," org.eventb.core.target="route_formation"/>
+<org.eventb.core.action name="-" org.eventb.core.assignment="rdy≔rdy∪{r}" org.eventb.core.label="act3"/>
+</org.eventb.core.event>
+</org.eventb.core.machineFile>
diff --git a/Train_B_Book/train_2_prob.bcm b/Train_B_Book/train_2_prob.bcm
new file mode 100644
index 0000000000000000000000000000000000000000..78ab953c980e950bf7266452d874a98b383baa35
--- /dev/null
+++ b/Train_B_Book/train_2_prob.bcm
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scMachineFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter">
+    <org.eventb.core.scRefinesMachine name="'" org.eventb.core.scTarget="/Train/train_2.bcm" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.refinesMachine#'"/>
+    <org.eventb.core.scSeesContext name="(" org.eventb.core.scTarget="/Train/train_ctx0_beebook.bcc" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.seesContext#_EIoJsIdnEeOcUOZ5WAG6MA"/>
+    <org.eventb.core.scInternalContext name="train_ctx0">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx0_beebook">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.extendsContext#'"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm44" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx2" org.eventb.core.label="axm45" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAYdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx3" org.eventb.core.label="compute_rtbl_from_nxt" org.eventb.core.predicate="rtbl={b⦂BLOCKS,r⦂ROUTES·r∈dom(nxt)∧(b∈dom(nxt(r))∨b∈ran(nxt(r))) ∣ b ↦ r}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_tx3w0YdrEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx4" org.eventb.core.label="axm40" org.eventb.core.predicate="nxt={R1 ↦ {L ↦ A,A ↦ B,B ↦ C},R2 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ E,E ↦ F,F ↦ G},R3 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ K,K ↦ J,J ↦ N},R4 ↦ {M ↦ H,H ↦ I,I ↦ K,K ↦ F,F ↦ G},R5 ↦ {M ↦ H,H ↦ I,I ↦ J,J ↦ N},R6 ↦ {C ↦ B,B ↦ A,A ↦ L},R7 ↦ {G ↦ F,F ↦ E,E ↦ D,D ↦ B,B ↦ A,A ↦ L},R8 ↦ {N ↦ J,J ↦ K,K ↦ D,D ↦ B,B ↦ A,A ↦ L},R9 ↦ {G ↦ F,F ↦ K,K ↦ I,I ↦ H,H ↦ M},R10 ↦ {N ↦ J,J ↦ I,I ↦ H,H ↦ M}}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LA4doEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx5" org.eventb.core.label="axm41" org.eventb.core.predicate="fst={R1 ↦ L,R2 ↦ L,R3 ↦ L,R4 ↦ M,R5 ↦ M,R6 ↦ C,R7 ↦ G,R8 ↦ N,R9 ↦ G,R10 ↦ N}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LBIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx6" org.eventb.core.label="axm42" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ G,R3 ↦ N,R4 ↦ G,R5 ↦ N,R6 ↦ L,R7 ↦ L,R8 ↦ L,R9 ↦ M,R10 ↦ M}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5yEIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="A" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwIdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="B" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwYdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="C" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwodoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="D" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uw4doEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="E" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uxIdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="F" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uxYdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="G" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="H" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="I" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0odoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="J" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V04doEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="K" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V1IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="L" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V1YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="M" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="N" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="R10" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j9YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R1" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384odoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R2" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3844doEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R3" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj385IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R4" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj385YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R5" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R6" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R7" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8odoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R8" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j84doEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R9" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j9IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInvariant name="train_ctx1" org.eventb.core.label="inv1" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx2" org.eventb.core.label="inv2" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx3" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx4" org.eventb.core.label="inv5" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx5" org.eventb.core.label="inv4" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx6" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx7" org.eventb.core.label="inv7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx8" org.eventb.core.label="inv8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx9" org.eventb.core.label="inv1" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx:" org.eventb.core.label="inv2" org.eventb.core.predicate="frm⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx;" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx=" org.eventb.core.label="inv4" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx&gt;" org.eventb.core.label="inv5" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx?" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx@" org.eventb.core.label="inv7" org.eventb.core.predicate="LBT⊆OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxA" org.eventb.core.label="inv8" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxB" org.eventb.core.label="thm1" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxC" org.eventb.core.label="thm2" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxD" org.eventb.core.label="thm3" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxE" org.eventb.core.label="inv4" org.eventb.core.predicate="rdy⊆frm" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_refinesMachine3" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxF" org.eventb.core.label="inv2" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxG" org.eventb.core.label="inv3" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scVariable name="rdy" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.variable#internal_element4" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="resrt" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.variable#internal_var1" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="OCC" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.variable#internal_var4" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="resbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.variable#internal_var2" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="frm" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.variable#internal_element2" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="TRK" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.variable#internal_element1" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+    <org.eventb.core.scVariable name="LBT" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.variable#internal_element3" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="rsrtbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.variable#internal_var3" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+    <org.eventb.core.scEvent name="train_ctx0_beebool" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.event#internal_element5">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_2.bcm|org.eventb.core.scMachineFile#train_2|org.eventb.core.scEvent#train_ctxH" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.event#internal_element5"/>
+        <org.eventb.core.scAction name="(" org.eventb.core.assignment="resrt ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act1"/>
+        <org.eventb.core.scAction name=")" org.eventb.core.assignment="resbl ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act2"/>
+        <org.eventb.core.scAction name="*" org.eventb.core.assignment="rsrtbl ≔ ∅ ⦂ ℙ(BLOCKS×ROUTES)" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act3"/>
+        <org.eventb.core.scAction name="+" org.eventb.core.assignment="OCC ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act4"/>
+        <org.eventb.core.scAction name="," org.eventb.core.assignment="TRK ≔ ∅ ⦂ ℙ(BLOCKS×BLOCKS)" org.eventb.core.label="act5" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="-" org.eventb.core.assignment="frm ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act6" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="." org.eventb.core.assignment="LBT ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act7" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="/" org.eventb.core.assignment="rdy ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act8" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element4"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_beeboom" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.event#internal_element6">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_2.bcm|org.eventb.core.scMachineFile#train_2|org.eventb.core.scEvent#train_ctxI" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.event#internal_element6|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="rsrtbl ≔ rsrtbl∪(rtbl ▷ {r})" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="u" org.eventb.core.assignment="resbl ≔ resbl∪rtbl∼[{r}]" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_beeboon" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.event#internal_element7">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_2.bcm|org.eventb.core.scMachineFile#train_2|org.eventb.core.scEvent#train_ctxJ" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.event#internal_element7|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt ∖ {r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="frm ≔ frm ∖ {r}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_beebooo" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_1" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.event#internal_element8">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_2.bcm|org.eventb.core.scMachineFile#train_2|org.eventb.core.scEvent#train_ctxK" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.event#internal_element8|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈rdy" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="rsrtbl(fst(r))=r" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="OCC ≔ OCC∪{fst(r)}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="LBT ≔ LBT∪{fst(r)}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="u" org.eventb.core.assignment="rdy ≔ rdy ∖ {r}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_beeboop" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_2" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.event#internal_element9">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_2.bcm|org.eventb.core.scMachineFile#train_2|org.eventb.core.scEvent#train_ctxL" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.event#internal_element9|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC∪{TRK(b)}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_beebooq" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_1" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.event#internal_element:">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_2.bcm|org.eventb.core.scMachineFile#train_2|org.eventb.core.scEvent#train_ctxM" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.event#internal_element:|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∉dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="f" org.eventb.core.assignment="LBT ≔ LBT ∖ {b}" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_beeboor" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_2" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.event#internal_element;">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_2.bcm|org.eventb.core.scMachineFile#train_2|org.eventb.core.scEvent#train_ctxN" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.event#internal_element;|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="f" org.eventb.core.assignment="LBT ≔ (LBT ∖ {b})∪{TRK(b)}" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_beeboos" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="point_positionning" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.event#internal_element=">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_2.bcm|org.eventb.core.scMachineFile#train_2|org.eventb.core.scEvent#train_ctxO" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.event#internal_element=|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="TRK ≔ (dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx0_beeboot" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_formation" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.event#internal_element&gt;">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_2.bcm|org.eventb.core.scMachineFile#train_2|org.eventb.core.scEvent#train_ctxP" org.eventb.core.source="/Train/train_2_prob.bum|org.eventb.core.machineFile#train_2_prob|org.eventb.core.event#internal_element&gt;|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#(" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#)" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="frm ≔ frm∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.action#*"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="rdy ≔ rdy∪{r}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.action#-"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.parameter#'" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+</org.eventb.core.scMachineFile>
diff --git a/Train_B_Book/train_2_prob.bpo b/Train_B_Book/train_2_prob.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..ae1289f2d6e706a2c9f847967e2e1f17f22d515e
--- /dev/null
+++ b/Train_B_Book/train_2_prob.bpo
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="1">
+    <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="1">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTET" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEU" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEV" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEW" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEX" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEY" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEZ" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="ROUTE[" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+        <org.eventb.core.poPredicate name="ROUTE\" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poPredicate name="ROUTE]" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poPredicate name="ROUTE^" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poPredicate name="ROUTE_" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poPredicate name="ROUTE`" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+        <org.eventb.core.poIdentifier name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="J" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="K" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="L" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="M" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="N" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="R10" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R2" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R3" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R4" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R5" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R6" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R7" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R8" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R9" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poPredicate name="ROUTEa" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEb" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAYdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEc" org.eventb.core.predicate="rtbl={b⦂BLOCKS,r⦂ROUTES·r∈dom(nxt)∧(b∈dom(nxt(r))∨b∈ran(nxt(r))) ∣ b ↦ r}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_tx3w0YdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poPredicate name="ROUTEd" org.eventb.core.predicate="nxt={R1 ↦ {L ↦ A,A ↦ B,B ↦ C},R2 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ E,E ↦ F,F ↦ G},R3 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ K,K ↦ J,J ↦ N},R4 ↦ {M ↦ H,H ↦ I,I ↦ K,K ↦ F,F ↦ G},R5 ↦ {M ↦ H,H ↦ I,I ↦ J,J ↦ N},R6 ↦ {C ↦ B,B ↦ A,A ↦ L},R7 ↦ {G ↦ F,F ↦ E,E ↦ D,D ↦ B,B ↦ A,A ↦ L},R8 ↦ {N ↦ J,J ↦ K,K ↦ D,D ↦ B,B ↦ A,A ↦ L},R9 ↦ {G ↦ F,F ↦ K,K ↦ I,I ↦ H,H ↦ M},R10 ↦ {N ↦ J,J ↦ I,I ↦ H,H ↦ M}}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LA4doEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEe" org.eventb.core.predicate="fst={R1 ↦ L,R2 ↦ L,R3 ↦ L,R4 ↦ M,R5 ↦ M,R6 ↦ C,R7 ↦ G,R8 ↦ N,R9 ↦ G,R10 ↦ N}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LBIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEf" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ G,R3 ↦ N,R4 ↦ G,R5 ↦ N,R6 ↦ L,R7 ↦ L,R8 ↦ L,R9 ↦ M,R10 ↦ M}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5yEIdoEeOcUOZ5WAG6MA"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/Train/train_2_prob.bpo|org.eventb.core.poFile#train_2_prob|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="1">
+        <org.eventb.core.poIdentifier name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poPredicate name="rsrtbm" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I"/>
+        <org.eventb.core.poPredicate name="rsrtbn" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I"/>
+        <org.eventb.core.poPredicate name="rsrtbo" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I"/>
+        <org.eventb.core.poPredicate name="rsrtbp" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I"/>
+        <org.eventb.core.poPredicate name="rsrtbq" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poPredicate name="rsrtbr" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtbs" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtbt" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtbu" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtbv" org.eventb.core.predicate="frm⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtbw" org.eventb.core.predicate="rsrtbl[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtbx" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poPredicate name="rsrtby" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I"/>
+        <org.eventb.core.poPredicate name="rsrtbz" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poPredicate name="rsrtb{" org.eventb.core.predicate="LBT⊆OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I"/>
+        <org.eventb.core.poPredicate name="rsrtb|" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poPredicate name="rsrtb}" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T"/>
+        <org.eventb.core.poPredicate name="rsrtb~" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K"/>
+        <org.eventb.core.poPredicate name="rsrtc'" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L"/>
+        <org.eventb.core.poPredicate name="rsrtc(" org.eventb.core.predicate="rdy⊆frm" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_refinesMachine3"/>
+        <org.eventb.core.poPredicate name="rsrtc)" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtc*" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_beebool" org.eventb.core.parentSet="/Train/train_2_prob.bpo|org.eventb.core.poFile#train_2_prob|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="TRK'" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rdy'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_beebool" org.eventb.core.parentSet="/Train/train_2_prob.bpo|org.eventb.core.poFile#train_2_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_beebool" org.eventb.core.poStamp="0"/>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_beeboom" org.eventb.core.parentSet="/Train/train_2_prob.bpo|org.eventb.core.poFile#train_2_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_beeboom" org.eventb.core.parentSet="/Train/train_2_prob.bpo|org.eventb.core.poFile#train_2_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_beeboom" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_beeboon" org.eventb.core.parentSet="/Train/train_2_prob.bpo|org.eventb.core.poFile#train_2_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_beeboon" org.eventb.core.parentSet="/Train/train_2_prob.bpo|org.eventb.core.poFile#train_2_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_beeboon" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_beebooo" org.eventb.core.parentSet="/Train/train_2_prob.bpo|org.eventb.core.poFile#train_2_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rdy'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_beebooo" org.eventb.core.parentSet="/Train/train_2_prob.bpo|org.eventb.core.poFile#train_2_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_beebooo" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈rdy" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rsrtbl(fst(r))=r" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_beeboop" org.eventb.core.parentSet="/Train/train_2_prob.bpo|org.eventb.core.poFile#train_2_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_beeboop" org.eventb.core.parentSet="/Train/train_2_prob.bpo|org.eventb.core.poFile#train_2_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_beeboop" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_beebooq" org.eventb.core.parentSet="/Train/train_2_prob.bpo|org.eventb.core.poFile#train_2_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_beebooq" org.eventb.core.parentSet="/Train/train_2_prob.bpo|org.eventb.core.poFile#train_2_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_beebooq" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∉dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_beeboor" org.eventb.core.parentSet="/Train/train_2_prob.bpo|org.eventb.core.poFile#train_2_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_beeboor" org.eventb.core.parentSet="/Train/train_2_prob.bpo|org.eventb.core.poFile#train_2_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_beeboor" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="TRK(b)∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_beeboos" org.eventb.core.parentSet="/Train/train_2_prob.bpo|org.eventb.core.poFile#train_2_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="TRK'" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_beeboos" org.eventb.core.parentSet="/Train/train_2_prob.bpo|org.eventb.core.poFile#train_2_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_beeboos" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx0_beeboot" org.eventb.core.parentSet="/Train/train_2_prob.bpo|org.eventb.core.poFile#train_2_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="rdy'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx0_beeboot" org.eventb.core.parentSet="/Train/train_2_prob.bpo|org.eventb.core.poFile#train_2_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx0_beeboot" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#("/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element8J|org.eventb.core.guard#)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_2_prob.bpo|org.eventb.core.poFile#train_2_prob|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="1"/>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_2_prob.bpr b/Train_B_Book/train_2_prob.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..d13ec2a20267852024def0758a1effc175861a98
--- /dev/null
+++ b/Train_B_Book/train_2_prob.bpr
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.prFile version="1"/>
\ No newline at end of file
diff --git a/Train_B_Book/train_2_prob.bps b/Train_B_Book/train_2_prob.bps
new file mode 100644
index 0000000000000000000000000000000000000000..ced513e210f482c3c7cafb26e5e709e8b27ac922
--- /dev/null
+++ b/Train_B_Book/train_2_prob.bps
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.psFile/>
\ No newline at end of file
diff --git a/Train_B_Book/train_2_prob.bum b/Train_B_Book/train_2_prob.bum
new file mode 100644
index 0000000000000000000000000000000000000000..a2f289c39b6e299f902684ce5345852302b1d7ab
--- /dev/null
+++ b/Train_B_Book/train_2_prob.bum
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.machineFile org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter" org.eventb.texttools.text_lastmodified="1390836247978" org.eventb.texttools.text_representation="machine train_2_prob refines train_2  sees train_ctx0_prob&#10;&#10;variables resrt // set of reserved routes&#10;          resbl // set of reserved blocks&#10;          rsrtbl // reserved route of reserved block&#10;          OCC // occupied block&#10;          TRK // physical track&#10;          frm // set of formed routes&#10;          LBT // last block of the train&#10;          rdy // ready routes: ready for accepting a train&#10;&#10;&#10;events&#10;  event INITIALISATION extends INITIALISATION&#10;  end&#10;&#10;  event route_reservation extends route_reservation&#10;  end&#10;&#10;  event route_freeing extends route_freeing&#10;  end&#10;&#10;  event FRONT_MOVE_1 // the train enters its route&#10;  extends FRONT_MOVE_1&#10;  end&#10;&#10;  event FRONT_MOVE_2 // the front of the train moves&#10;  extends FRONT_MOVE_2&#10;  end&#10;&#10;  event BACK_MOVE_1 // the train leaves its route&#10;  extends BACK_MOVE_1&#10;  end&#10;&#10;  event BACK_MOVE_2 // the back of the train moves&#10;  extends BACK_MOVE_2&#10;  end&#10;&#10;  event point_positionning extends point_positionning&#10;  end&#10;&#10;  event route_formation extends route_formation&#10;  end&#10;end&#10;" version="5">
+    <org.eventb.core.refinesMachine name="'" org.eventb.core.target="train_2"/>
+    <org.eventb.core.seesContext name="_EIoJsIdnEeOcUOZ5WAG6MA" org.eventb.core.target="train_ctx0_beebook"/>
+    <org.eventb.core.variable name="internal_var1" org.eventb.core.comment="set of reserved routes" org.eventb.core.identifier="resrt"/>
+    <org.eventb.core.variable name="internal_var2" org.eventb.core.comment="set of reserved blocks" org.eventb.core.identifier="resbl"/>
+    <org.eventb.core.variable name="internal_var3" org.eventb.core.comment="reserved route of reserved block" org.eventb.core.identifier="rsrtbl"/>
+    <org.eventb.core.variable name="internal_var4" org.eventb.core.comment="occupied block" org.eventb.core.identifier="OCC"/>
+    <org.eventb.core.variable name="internal_element1" org.eventb.core.comment="physical track" org.eventb.core.identifier="TRK"/>
+    <org.eventb.core.variable name="internal_element2" org.eventb.core.comment="set of formed routes" org.eventb.core.identifier="frm"/>
+    <org.eventb.core.variable name="internal_element3" org.eventb.core.comment="last block of the train" org.eventb.core.identifier="LBT"/>
+    <org.eventb.core.variable name="internal_element4" org.eventb.core.comment="ready routes: ready for accepting a train" org.eventb.core.identifier="rdy"/>
+    <org.eventb.core.event name="internal_element5" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION"/>
+    <org.eventb.core.event name="internal_element6" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation">
+        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="route_reservation"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_element7" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing">
+        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="route_freeing"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_element8" org.eventb.core.comment="the train enters its route" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_1">
+        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="FRONT_MOVE_1"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_element9" org.eventb.core.comment="the front of the train moves" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_2">
+        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="FRONT_MOVE_2"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_element:" org.eventb.core.comment="the train leaves its route" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_1">
+        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="BACK_MOVE_1"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_element;" org.eventb.core.comment="the back of the train moves" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_2">
+        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="BACK_MOVE_2"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_element=" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="point_positionning">
+        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="point_positionning"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_element&gt;" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_formation">
+        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="route_formation"/>
+    </org.eventb.core.event>
+</org.eventb.core.machineFile>
diff --git a/Train_B_Book/train_3.bcm b/Train_B_Book/train_3.bcm
new file mode 100644
index 0000000000000000000000000000000000000000..5815f71a8ee98db27c2c402daf56ff65b4fdd16f
--- /dev/null
+++ b/Train_B_Book/train_3.bcm
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scMachineFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter">
+    <org.eventb.core.scRefinesMachine name="'" org.eventb.core.scTarget="/Train/train_2.bcm" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.refinesMachine#internal_refinesMachine1"/>
+    <org.eventb.core.scSeesContext name="(" org.eventb.core.scTarget="/Train/train_ctx1.bcc" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.seesContext#internal_seesContext1"/>
+    <org.eventb.core.scInternalContext name="train_ctx0">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx1">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.extendsContext#internal_extendsContext1"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm1" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scCarrierSet name="S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.carrierSet#internal_cst1" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.scConstant name="SIG" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInvariant name="train_ctx1" org.eventb.core.label="inv1" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx2" org.eventb.core.label="inv2" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx3" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx4" org.eventb.core.label="inv5" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx5" org.eventb.core.label="inv4" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx6" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx7" org.eventb.core.label="inv7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx8" org.eventb.core.label="inv8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx9" org.eventb.core.label="inv1" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx:" org.eventb.core.label="inv2" org.eventb.core.predicate="frm⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx;" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx=" org.eventb.core.label="inv4" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx&gt;" org.eventb.core.label="inv5" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx?" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx@" org.eventb.core.label="inv7" org.eventb.core.predicate="LBT⊆OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxA" org.eventb.core.label="inv8" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxB" org.eventb.core.label="thm1" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxC" org.eventb.core.label="thm2" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxD" org.eventb.core.label="thm3" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxE" org.eventb.core.label="inv4" org.eventb.core.predicate="rdy⊆frm" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_refinesMachine3" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxF" org.eventb.core.label="inv2" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxG" org.eventb.core.label="inv3" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxH" org.eventb.core.label="inv1" org.eventb.core.predicate="GRN⊆S" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxI" org.eventb.core.label="inv2" org.eventb.core.predicate="SIG[fst[rdy]]=GRN" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxJ" org.eventb.core.label="thm1" org.eventb.core.predicate="rdy ◁ fst∈rdy ↣ BLOCKS" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element1T" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scVariable name="rdy" org.eventb.core.abstract="true" org.eventb.core.concrete="false" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.variable#internal_element4" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="resrt" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.variable#internal_var1" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="OCC" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.variable#internal_var4" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="resbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.variable#internal_var2" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="GRN" org.eventb.core.abstract="false" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.variable#internal_element5" org.eventb.core.type="ℙ(S)"/>
+    <org.eventb.core.scVariable name="frm" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.variable#internal_element2" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="TRK" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.variable#internal_element1" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+    <org.eventb.core.scVariable name="LBT" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.variable#internal_element3" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="rsrtbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.variable#internal_var3" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+    <org.eventb.core.scEvent name="train_ctxK" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="INITIALISATION" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_evt1">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_2.bcm|org.eventb.core.scMachineFile#train_2|org.eventb.core.scEvent#train_ctxH" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.scAction name="(" org.eventb.core.assignment="resrt ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act1"/>
+        <org.eventb.core.scAction name=")" org.eventb.core.assignment="resbl ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act2"/>
+        <org.eventb.core.scAction name="*" org.eventb.core.assignment="rsrtbl ≔ ∅ ⦂ ℙ(BLOCKS×ROUTES)" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act3"/>
+        <org.eventb.core.scAction name="+" org.eventb.core.assignment="OCC ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act4"/>
+        <org.eventb.core.scAction name="," org.eventb.core.assignment="TRK ≔ ∅ ⦂ ℙ(BLOCKS×BLOCKS)" org.eventb.core.label="act5" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="-" org.eventb.core.assignment="frm ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act6" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="." org.eventb.core.assignment="LBT ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act7" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="/" org.eventb.core.assignment="GRN ≔ ∅ ⦂ ℙ(S)" org.eventb.core.label="act8" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element4"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxL" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element1">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_2.bcm|org.eventb.core.scMachineFile#train_2|org.eventb.core.scEvent#train_ctxI" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element1|org.eventb.core.refinesEvent#internal_refinesEvent1"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="rsrtbl ≔ rsrtbl∪(rtbl ▷ {r})" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="u" org.eventb.core.assignment="resbl ≔ resbl∪rtbl∼[{r}]" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxM" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element2">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_2.bcm|org.eventb.core.scMachineFile#train_2|org.eventb.core.scEvent#train_ctxJ" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element2|org.eventb.core.refinesEvent#internal_refinesEvent1"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt ∖ {r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="frm ≔ frm ∖ {r}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxN" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="FRONT_MOVE_1" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_2.bcm|org.eventb.core.scMachineFile#train_2|org.eventb.core.scEvent#train_ctxK" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.refinesEvent#internal_refinesEvent1"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈dom(SIG)" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="SIG(b)∈GRN" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC∪{b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="LBT ≔ LBT∪{b}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="GRN ≔ GRN ∖ {SIG(b)}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scWitness name="f" org.eventb.core.label="r" org.eventb.core.predicate="r∈rdy∧fst(r)=b" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.witness#internal_wit1"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxO" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_2" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element4">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_2.bcm|org.eventb.core.scMachineFile#train_2|org.eventb.core.scEvent#train_ctxL" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element4|org.eventb.core.refinesEvent#internal_refinesEvent1"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC∪{TRK(b)}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxP" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_1" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element5">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_2.bcm|org.eventb.core.scMachineFile#train_2|org.eventb.core.scEvent#train_ctxM" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element5|org.eventb.core.refinesEvent#internal_refinesEvent1"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∉dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="f" org.eventb.core.assignment="LBT ≔ LBT ∖ {b}" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxQ" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_2" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element6">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_2.bcm|org.eventb.core.scMachineFile#train_2|org.eventb.core.scEvent#train_ctxN" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element6|org.eventb.core.refinesEvent#internal_refinesEvent1"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="f" org.eventb.core.assignment="LBT ≔ (LBT ∖ {b})∪{TRK(b)}" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxR" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="point_positionning" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element7">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_2.bcm|org.eventb.core.scMachineFile#train_2|org.eventb.core.scEvent#train_ctxO" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element7|org.eventb.core.refinesEvent#internal_element1"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="TRK ≔ (dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctxS" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="route_formation" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_2.bcm|org.eventb.core.scMachineFile#train_2|org.eventb.core.scEvent#train_ctxP" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.refinesEvent#,"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.guard#(" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.guard#)" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.parameter#'" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="frm ≔ frm∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.action#*"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="GRN ≔ GRN∪{SIG(fst(r))}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.action#+"/>
+    </org.eventb.core.scEvent>
+</org.eventb.core.scMachineFile>
diff --git a/Train_B_Book/train_3.bpo b/Train_B_Book/train_3.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..aa53f5a62afddeff0a399c362c4021f354574a78
--- /dev/null
+++ b/Train_B_Book/train_3.bpo
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTET" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEU" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEV" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEW" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEX" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEY" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEZ" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="ROUTE[" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+        <org.eventb.core.poPredicate name="ROUTE\" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poPredicate name="ROUTE]" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poPredicate name="ROUTE^" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poPredicate name="ROUTE_" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poPredicate name="ROUTE`" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+        <org.eventb.core.poIdentifier name="S" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.poIdentifier name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        <org.eventb.core.poPredicate name="ROUTEa" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.axiom#internal_axm1A"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="GRN" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.poIdentifier name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poPredicate name="rsrtbm" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I"/>
+        <org.eventb.core.poPredicate name="rsrtbn" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I"/>
+        <org.eventb.core.poPredicate name="rsrtbo" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I"/>
+        <org.eventb.core.poPredicate name="rsrtbp" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I"/>
+        <org.eventb.core.poPredicate name="rsrtbq" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poPredicate name="rsrtbr" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtbs" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtbt" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtbu" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtbv" org.eventb.core.predicate="frm⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtbw" org.eventb.core.predicate="rsrtbl[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtbx" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poPredicate name="rsrtby" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I"/>
+        <org.eventb.core.poPredicate name="rsrtbz" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poPredicate name="rsrtb{" org.eventb.core.predicate="LBT⊆OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I"/>
+        <org.eventb.core.poPredicate name="rsrtb|" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poPredicate name="rsrtb}" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T"/>
+        <org.eventb.core.poPredicate name="rsrtb~" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K"/>
+        <org.eventb.core.poPredicate name="rsrtc'" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L"/>
+        <org.eventb.core.poPredicate name="rsrtc(" org.eventb.core.predicate="rdy⊆frm" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_refinesMachine3"/>
+        <org.eventb.core.poPredicate name="rsrtc)" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtc*" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="thm1/THM" org.eventb.core.accurate="true" org.eventb.core.poDesc="Theorem" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#HYPtrain_ctxI"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="rdy ◁ fst∈rdy ↣ BLOCKS" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element1T"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element1T"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#HYPtrain_ctxI"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="INITIALISATION/inv2/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxK"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="SIG[fst[∅ ⦂ ℙ(ROUTES)]]=(∅ ⦂ ℙ(S))" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poSequent#INITIALISATION\/inv2\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#HYPtrain_ctxI|org.eventb.core.poPredicate#PRD1"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxK" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="TRK'" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rdy'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="GRN'" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxK" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxK" org.eventb.core.poStamp="0"/>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxL" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxL" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxL" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxM" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxM" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxM" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/grd2/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Guard" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxN("/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="b∈dom(SIG)∧SIG∈BLOCKS ⇸ S" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxN("/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/r/WWD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of witness" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxN"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="r∈rdy⇒r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.witness#internal_wit1"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.witness#internal_wit1"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poSequent#FRONT_MOVE_1\/r\/WWD|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/r/WFIS" org.eventb.core.accurate="true" org.eventb.core.poDesc="Feasibility of witness" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxN"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∃r⦂ROUTES·r∈rdy∧fst(r)=b" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.witness#internal_wit1"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.witness#internal_wit1"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poSequent#FRONT_MOVE_1\/r\/WFIS|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/inv2/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxN">
+            <org.eventb.core.poPredicate name="'" org.eventb.core.predicate="r∈rdy∧fst(r)=b" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.witness#internal_wit1"/>
+        </org.eventb.core.poPredicateSet>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="SIG[fst[rdy ∖ {r}]]=GRN ∖ {SIG(b)}" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poSequent#FRONT_MOVE_1\/inv2\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#HYPtrain_ctxI|org.eventb.core.poPredicate#PRD1"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/grd1/GRD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Guard strengthening (split)" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxN">
+            <org.eventb.core.poPredicate name="'" org.eventb.core.predicate="r∈rdy∧fst(r)=b" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.witness#internal_wit1"/>
+        </org.eventb.core.poPredicateSet>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="r∈rdy" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poSequent#FRONT_MOVE_1\/grd1\/GRD|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/grd2/GRD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Guard strengthening (split)" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxN">
+            <org.eventb.core.poPredicate name="'" org.eventb.core.predicate="r∈rdy∧fst(r)=b" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.witness#internal_wit1"/>
+        </org.eventb.core.poPredicateSet>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="rsrtbl(fst(r))=r" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poSequent#FRONT_MOVE_1\/grd2\/GRD|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/act3/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of action" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxN">
+            <org.eventb.core.poPredicate name="'" org.eventb.core.predicate="r∈rdy∧fst(r)=b" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.witness#internal_wit1"/>
+        </org.eventb.core.poPredicateSet>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="b∈dom(SIG)∧SIG∈BLOCKS ⇸ S" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxN"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/act1/SIM" org.eventb.core.accurate="true" org.eventb.core.poDesc="Action simulation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxN">
+            <org.eventb.core.poPredicate name="'" org.eventb.core.predicate="r∈rdy∧fst(r)=b" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.witness#internal_wit1"/>
+        </org.eventb.core.poPredicateSet>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="OCC∪{b}=OCC∪{fst(r)}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poSequent#FRONT_MOVE_1\/act1\/SIM|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="FRONT_MOVE_1/act2/SIM" org.eventb.core.accurate="true" org.eventb.core.poDesc="Action simulation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxN">
+            <org.eventb.core.poPredicate name="'" org.eventb.core.predicate="r∈rdy∧fst(r)=b" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.witness#internal_wit1"/>
+        </org.eventb.core.poPredicateSet>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="LBT∪{b}=LBT∪{fst(r)}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poSequent#FRONT_MOVE_1\/act2\/SIM|org.eventb.core.poPredicateSet#SEQHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxN" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rdy'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="GRN'" org.eventb.core.type="ℙ(S)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTHYPtrain_ctxN(" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxN" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈dom(SIG)" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxN" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTHYPtrain_ctxN(" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="SIG(b)∈GRN" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxO" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxO" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxO" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxP" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxP" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∉dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxQ" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxQ" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxQ" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="TRK(b)∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxR" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="TRK'" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxR" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxR" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="route_formation/inv2/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxS"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="SIG[fst[rdy∪{r}]]=GRN∪{SIG(fst(r))}" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.event#internal_refinesMachine2"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poSequent#route_formation\/inv2\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#HYPtrain_ctxI|org.eventb.core.poPredicate#PRD1"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="route_formation/act2/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of action" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxS"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧fst(r)∈dom(SIG)∧SIG∈BLOCKS ⇸ S" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.action#+"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.action#+"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctxS"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctxS" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="rdy'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="GRN'" org.eventb.core.type="ℙ(S)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctxS" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctxS" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.guard#("/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.guard#)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="HYPtrain_ctxI" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="GRN⊆S" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="SIG[fst[rdy]]=GRN" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element2I"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_3.bpo|org.eventb.core.poFile#train_3|org.eventb.core.poPredicateSet#HYPtrain_ctxI" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="rdy ◁ fst∈rdy ↣ BLOCKS" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element1T"/>
+    </org.eventb.core.poPredicateSet>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_3.bpr b/Train_B_Book/train_3.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..efcfb83d9ab6b9d7336786970821d4f729a576a5
--- /dev/null
+++ b/Train_B_Book/train_3.bpr
@@ -0,0 +1,6327 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.prFile version="1">
+    <org.eventb.core.prProof name="inv2/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(S,{S1},{S2},{S3},{S4},{S5}))" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p68"/>
+                                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p89"/>
+                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p88"/>
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p98"/>
+                                                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p97"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p99" org.eventb.core.prInfHyps="p100"/>
+                                                <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p99"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p102"/>
+                                                <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p101"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p103" org.eventb.core.prInfHyps="p104"/>
+                                                <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p103"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p105"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p106"/>
+                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p81"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p107"/>
+                                                <org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p83"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF20" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p108"/>
+                                                <org.eventb.core.prHypAction name="HIDE21" org.eventb.core.prHyps="p85"/>
+                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p109"/>
+                                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p92"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p110"/>
+                                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p94"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p98" org.eventb.core.prInfHyps="p111"/>
+                                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p98"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p100" org.eventb.core.prInfHyps="p112"/>
+                                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p100"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p102" org.eventb.core.prInfHyps="p113"/>
+                                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p102"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p104" org.eventb.core.prInfHyps="p114"/>
+                                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p104"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p106" org.eventb.core.prInfHyps="p115"/>
+                                                        <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p106"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p107" org.eventb.core.prInfHyps="p116"/>
+                                                        <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p107"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p108" org.eventb.core.prInfHyps="p117"/>
+                                                        <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p108"/>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p112" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬S4=S5">
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬S1=S5">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬S3=S5">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="S={S1,S2,S3,S4,S5}">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p116" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬S2=S3">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬S2=S4">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬S1=S2">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬S1=S3">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p113" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬S3=S4">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p108" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="GRN⊆S">
+            <org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬S2=S5">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p117" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p111" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p115" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p109" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬S1=S4">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p107" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p114" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p110" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="thm1/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/>
+                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
+                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
+                <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
+                <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
+                <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
+                <org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16"/>
+                        <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p22"/>
+                        <org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="REWRITE7" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p26"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p27"/>
+                        <org.eventb.core.prHypAction name="REWRITE9" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p28"/>
+                        <org.eventb.core.prHypAction name="REWRITE10" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p29"/>
+                        <org.eventb.core.prHypAction name="REWRITE11" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p30"/>
+                        <org.eventb.core.prHypAction name="REWRITE12" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p31"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p35"/>
+                                <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p26" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p36"/>
+                                <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p28" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p37"/>
+                                <org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p29" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p38"/>
+                                <org.eventb.core.prHypAction name="REWRITE7" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p39"/>
+                                <org.eventb.core.prHypAction name="REWRITE8" org.eventb.core.prHidden="p31" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p40"/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(fst)∩ran(TRK)⊆ran(lst)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="GRN⊆S">
+            <org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩rsrtbl∼[{r}]⊆OCC">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩rsrtbl∼[{r}]⊆OCC">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩rsrtbl∼[{r}]⊆OCC">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="ran(lst)∩dom(TRK)⊆ran(fst)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/grd2/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS,S">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(S,{S1},{S2},{S3},{S4},{S5}))" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p83">
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p83" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p85"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p84"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p87"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p86"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p89"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p88"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p92"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="p1"/>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S"/>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬S1=S3">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬S3=S4">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬S2=S5">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="b∈dom(SIG)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬S4=S5">
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬S1=S5">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬S3=S5">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="S={S1,S2,S3,S4,S5}">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬S1=S4">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬S2=S3">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="⊤∧SIG∈BLOCKS ⇸ S"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="b∈dom(SIG)∧SIG∈BLOCKS ⇸ S"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="SIG∈BLOCKS ⇸ S"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬S2=S4">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬S1=S2">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/r/WWD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(S,{S1},{S2},{S3},{S4},{S5}))" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p70"/>
+                                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p89"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p88"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p91"/>
+                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p90"/>
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p97"/>
+                                                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p98"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p99" org.eventb.core.prInfHyps="p100"/>
+                                                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p99"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p102"/>
+                                                <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p101"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p103" org.eventb.core.prInfHyps="p104"/>
+                                                <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p103"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p105" org.eventb.core.prInfHyps="p106"/>
+                                                <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p105"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p107"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p108"/>
+                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p83"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p109"/>
+                                                <org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p85"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF20" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p110"/>
+                                                <org.eventb.core.prHypAction name="HIDE21" org.eventb.core.prHyps="p87"/>
+                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p111"/>
+                                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p94"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p112"/>
+                                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p96"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p100" org.eventb.core.prInfHyps="p113"/>
+                                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p100"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p102" org.eventb.core.prInfHyps="p114"/>
+                                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p102"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p104" org.eventb.core.prInfHyps="p115"/>
+                                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p104"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p106" org.eventb.core.prInfHyps="p116"/>
+                                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p106"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p108" org.eventb.core.prInfHyps="p117"/>
+                                                        <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p108"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p109" org.eventb.core.prInfHyps="p118"/>
+                                                        <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p109"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p110" org.eventb.core.prInfHyps="p119"/>
+                                                        <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p110"/>
+                                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p121" org.eventb.core.prHyps="p120">
+                                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p121" org.eventb.core.prHyps="">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p122">
+                                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p122" org.eventb.core.prHyps="p1">
+                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p123">
+                                                                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p123" org.eventb.core.prHyps="">
+                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p124">
+                                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p124" org.eventb.core.prHyps=""/>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                            <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p125">
+                                                                        <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p125" org.eventb.core.prHyps="p1"/>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p114" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬S4=S5">
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬S1=S5">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈rdy⇒r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬S3=S5">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="S={S1,S2,S3,S4,S5}">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p121" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p124" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p118" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬S2=S3">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p123" org.eventb.core.predicate="r∈ROUTES"/>
+        <org.eventb.core.prPred name="p125" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬S2=S4">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬S1=S2">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬S1=S3">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p115" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬S3=S4">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p110" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p107" org.eventb.core.predicate="GRN⊆S">
+            <org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬S2=S5">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p119" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p113" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p117" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p111" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p108" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬S1=S4">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p109" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p122" org.eventb.core.predicate="r∈dom(fst)"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p116" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p120" org.eventb.core.predicate="r∈rdy"/>
+        <org.eventb.core.prPred name="p112" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/r/WFIS" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/>
+                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
+                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
+                <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
+                <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
+                <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
+                <org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
+                        <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16"/>
+                        <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p18"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p20"/>
+                        <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p22"/>
+                        <org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="REWRITE7" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p26"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p27"/>
+                        <org.eventb.core.prHypAction name="REWRITE9" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p28"/>
+                        <org.eventb.core.prHypAction name="REWRITE10" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p29"/>
+                        <org.eventb.core.prHypAction name="REWRITE11" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p30"/>
+                        <org.eventb.core.prHypAction name="REWRITE12" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p31"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p35"/>
+                                <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p26" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p36"/>
+                                <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p28" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p37"/>
+                                <org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p29" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p38"/>
+                                <org.eventb.core.prHypAction name="REWRITE7" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p39"/>
+                                <org.eventb.core.prHypAction name="REWRITE8" org.eventb.core.prHidden="p31" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p40"/>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(fst)∩ran(TRK)⊆ran(lst)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="GRN⊆S">
+            <org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩rsrtbl∼[{r}]⊆OCC">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩rsrtbl∼[{r}]⊆OCC">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩rsrtbl∼[{r}]⊆OCC">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="ran(lst)∩dom(TRK)⊆ran(fst)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/grd1/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(S,{S1},{S2},{S3},{S4},{S5}))" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p70"/>
+                                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p0">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p1"/>
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p86"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p85"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p88"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p87"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p89"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p83"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p84"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p95"/>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬S1=S3">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬S3=S4">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="⊥⇒r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬S2=S5">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬S4=S5">
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬S1=S5">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="r∈rdy⇒r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬S3=S5">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="r∈rdy∧fst(r)=b"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="⊥∧fst(r)=b"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="S={S1,S2,S3,S4,S5}">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="⊥"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬S1=S4">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬S2=S3">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬S2=S4">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈rdy"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬S1=S2">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/grd2/GRD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prInfHyps="p4"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p8"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p11"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p13,p14"/>
+                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p0"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p4"/>
+                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p15"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
+                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
+                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p18"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p20"/>
+                                <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p21"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p23"/>
+                                <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p25"/>
+                                <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p27"/>
+                                <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p26"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p29"/>
+                                <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p28"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p30"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p31"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p6"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p8"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF20" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="HIDE21" org.eventb.core.prHyps="p10"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p34"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p35"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p36"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p23"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p37"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p25"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p38"/>
+                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p27"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p39"/>
+                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p29"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p40"/>
+                                        <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p31"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p41"/>
+                                        <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p32"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p42"/>
+                                        <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p33"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with fst(r)=b" org.eventb.core.prHyps="p14">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p44"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p46"/>
+                                                <org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p45,p43"/>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="fst(r)=b"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="SIG(b)∈GRN">
+            <org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="GRN⊆S">
+            <org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="r∈dom(fst)"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="r∈rdy⇒⊤∧⊤"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="b∈dom(SIG)">
+            <org.eventb.core.prIdent name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="fst(r)∈dom(SIG)">
+            <org.eventb.core.prIdent name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="r∈rdy⇒r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈rdy∧fst(r)=b"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="r∈rdy"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="SIG(fst(r))∈GRN">
+            <org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/act3/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS,S">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(S,{S1},{S2},{S3},{S4},{S5}))" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p83">
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p83" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p97">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p85"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p84"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p87"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p86"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p89"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p88"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p95,p96"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p94"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p97" org.eventb.core.prHyps=""/>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="fst(r)=b">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="b∈dom(SIG)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬S4=S5">
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬S1=S5">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬S3=S5">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="r∈rdy∧fst(r)=b">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="S={S1,S2,S3,S4,S5}">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬S2=S3">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="b∈dom(SIG)∧SIG∈BLOCKS ⇸ S"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬S2=S4">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬S1=S2">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬S1=S3">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬S3=S4">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬S2=S5">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="⊤∧⊤"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬S1=S4">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="SIG∈BLOCKS ⇸ S"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="r∈rdy">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/act1/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(S,{S1},{S2},{S3},{S4},{S5}))" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p70"/>
+                                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p82,p83,p84" org.eventb.core.prInfHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p84"/>
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p87"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p86"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p89"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p88"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p96,p97"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p1"/>
+                                                <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p85"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p98"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p99" org.eventb.core.prInfHyps="p100"/>
+                                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p99"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p102"/>
+                                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p101"/>
+                                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p103"/>
+                                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p104"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p105" org.eventb.core.prInfHyps="p106"/>
+                                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p105"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p107" org.eventb.core.prInfHyps="p108"/>
+                                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p107"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p109" org.eventb.core.prInfHyps="p110"/>
+                                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p109"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p111" org.eventb.core.prInfHyps="p112"/>
+                                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p111"/>
+                                                        <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p113"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p114"/>
+                                                        <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p87"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p115"/>
+                                                        <org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p89"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF20" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p116"/>
+                                                        <org.eventb.core.prHypAction name="HIDE21" org.eventb.core.prHyps="p91"/>
+                                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'">
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p100" org.eventb.core.prInfHyps="p117"/>
+                                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p100"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p102" org.eventb.core.prInfHyps="p118"/>
+                                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p102"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p106" org.eventb.core.prInfHyps="p119"/>
+                                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p106"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p108" org.eventb.core.prInfHyps="p120"/>
+                                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p108"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p110" org.eventb.core.prInfHyps="p121"/>
+                                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p110"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p112" org.eventb.core.prInfHyps="p122"/>
+                                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p112"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p114" org.eventb.core.prInfHyps="p123"/>
+                                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p114"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p115" org.eventb.core.prInfHyps="p124"/>
+                                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p115"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p116" org.eventb.core.prInfHyps="p125"/>
+                                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p116"/>
+                                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with fst(r)=b" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p97">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p130">
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p126" org.eventb.core.prInfHyps="p127"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p128" org.eventb.core.prInfHyps="p129"/>
+                                                                        <org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p126,p128"/>
+                                                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p130" org.eventb.core.prHyps="">
+                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p131">
+                                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p131" org.eventb.core.prHyps=""/>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="fst(r)=b"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="r∈rdy⇒⊤∧⊤"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p126" org.eventb.core.predicate="b∈dom(SIG)">
+            <org.eventb.core.prIdent name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p120" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬S4=S5">
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p127" org.eventb.core.predicate="fst(r)∈dom(SIG)">
+            <org.eventb.core.prIdent name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬S1=S5">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="r∈rdy⇒r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬S3=S5">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="r∈rdy∧fst(r)=b"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="S={S1,S2,S3,S4,S5}">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p131" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p124" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p110" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p128" org.eventb.core.predicate="SIG(b)∈GRN">
+            <org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬S2=S3">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="OCC∪{b}=OCC∪{fst(r)}"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p109" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p108" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬S2=S4">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬S1=S2">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p107" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬S1=S3">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p111" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p121" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬S3=S4">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p116" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p113" org.eventb.core.predicate="GRN⊆S">
+            <org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬S2=S5">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p125" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p119" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p123" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p117" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p129" org.eventb.core.predicate="SIG(fst(r))∈GRN">
+            <org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p114" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬S1=S4">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p115" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="r∈dom(fst)"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p122" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p112" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="r∈rdy"/>
+        <org.eventb.core.prPred name="p118" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p130" org.eventb.core.predicate="OCC∪{fst(r)}=OCC∪{fst(r)}"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/act2/SIM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(S,{S1},{S2},{S3},{S4},{S5}))" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p70"/>
+                                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p82,p83,p84" org.eventb.core.prInfHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p84"/>
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p87"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p86"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p89"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p88"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p96,p97"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p1"/>
+                                                <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p85"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p98"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p99" org.eventb.core.prInfHyps="p100"/>
+                                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p99"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p102"/>
+                                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p101"/>
+                                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p103"/>
+                                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p104"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p105" org.eventb.core.prInfHyps="p106"/>
+                                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p105"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p107" org.eventb.core.prInfHyps="p108"/>
+                                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p107"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p109" org.eventb.core.prInfHyps="p110"/>
+                                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p109"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p111" org.eventb.core.prInfHyps="p112"/>
+                                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p111"/>
+                                                        <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p113"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p114"/>
+                                                        <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p87"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p115"/>
+                                                        <org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p89"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF20" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p116"/>
+                                                        <org.eventb.core.prHypAction name="HIDE21" org.eventb.core.prHyps="p91"/>
+                                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'">
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p100" org.eventb.core.prInfHyps="p117"/>
+                                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p100"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p102" org.eventb.core.prInfHyps="p118"/>
+                                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p102"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p106" org.eventb.core.prInfHyps="p119"/>
+                                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p106"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p108" org.eventb.core.prInfHyps="p120"/>
+                                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p108"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p110" org.eventb.core.prInfHyps="p121"/>
+                                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p110"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p112" org.eventb.core.prInfHyps="p122"/>
+                                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p112"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p114" org.eventb.core.prInfHyps="p123"/>
+                                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p114"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p115" org.eventb.core.prInfHyps="p124"/>
+                                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p115"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p116" org.eventb.core.prInfHyps="p125"/>
+                                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p116"/>
+                                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with fst(r)=b" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p97">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p130">
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p126" org.eventb.core.prInfHyps="p127"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p128" org.eventb.core.prInfHyps="p129"/>
+                                                                        <org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p126,p128"/>
+                                                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p130" org.eventb.core.prHyps="">
+                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p131">
+                                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p131" org.eventb.core.prHyps=""/>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="fst(r)=b"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="r∈rdy⇒⊤∧⊤"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p126" org.eventb.core.predicate="b∈dom(SIG)">
+            <org.eventb.core.prIdent name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p120" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬S4=S5">
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p127" org.eventb.core.predicate="fst(r)∈dom(SIG)">
+            <org.eventb.core.prIdent name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬S1=S5">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="r∈rdy⇒r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬S3=S5">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="r∈rdy∧fst(r)=b"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="S={S1,S2,S3,S4,S5}">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p131" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p124" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p110" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p128" org.eventb.core.predicate="SIG(b)∈GRN">
+            <org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬S2=S3">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p109" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p130" org.eventb.core.predicate="LBT∪{fst(r)}=LBT∪{fst(r)}"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p108" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬S2=S4">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬S1=S2">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p107" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬S1=S3">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p111" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p121" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬S3=S4">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p116" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p113" org.eventb.core.predicate="GRN⊆S">
+            <org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬S2=S5">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p125" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p119" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p123" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="LBT∪{b}=LBT∪{fst(r)}"/>
+        <org.eventb.core.prPred name="p117" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p129" org.eventb.core.predicate="SIG(fst(r))∈GRN">
+            <org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p114" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬S1=S4">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p115" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="r∈dom(fst)"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p122" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p112" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="r∈rdy"/>
+        <org.eventb.core.prPred name="p118" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_formation/act2/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39" org.eventb.core.prSets="BLOCKS,ROUTES,S">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p40"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p28"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p41"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p27"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p42"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p13"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p43"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p16"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p44"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p45"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p46"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p47"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p48"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p49"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p22"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p50"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p51"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p29"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p52"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p53"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p54"/>
+                        <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p55"/>
+                        <org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF20" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p56"/>
+                        <org.eventb.core.prHypAction name="HIDE21" org.eventb.core.prHyps="p42"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p57"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p45"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p58"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p46"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p59"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p49"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p50" org.eventb.core.prInfHyps="p60"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p50"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p61"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p51"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p62"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p52"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p63"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p54"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p55" org.eventb.core.prInfHyps="p64"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p55"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p56" org.eventb.core.prInfHyps="p65"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p56"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p66">
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p25">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p67">
+                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p67" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p68">
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p68" org.eventb.core.prHyps=""/>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                            <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p69">
+                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p25"/>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p70">
+                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p70" org.eventb.core.prHyps="p6,p14,p20,p25,p12,p15,p7,p1,p10,p32,p18,p19,p4,p24,p3,p11,p26,p21,p8,p33,p35,p30,p23,p31,p37,p36,p34,p38,p2,p43,p57,p58,p59,p60,p61,p62,p63,p64,p65">
+                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p71">
+                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="p1"/>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="lst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="resrt⊆ROUTES"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="GRN⊆S"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="OCC⊆resbl"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="SIG[fst[rdy]]=GRN"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="fst(r)∈dom(SIG)"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="rdy⊆frm"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="r∈resrt ∖ frm"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="frm⊆resrt"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧fst(r)∈dom(SIG)∧SIG∈BLOCKS ⇸ S"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="fst∼⊆rtbl"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="r∈dom(fst)"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="LBT⊆OCC"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="SIG∈BLOCKS ⇸ S"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="r∈ROUTES"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="resbl⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="rdy ◁ fst∈rdy ↣ BLOCKS"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="r∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_2/act1/WD"/>
+    <org.eventb.core.prProof name="BACK_MOVE_2/act4/WD"/>
+    <org.eventb.core.prProof name="point_positionning/act1/WD"/>
+    <org.eventb.core.prProof name="INITIALISATION/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(S,{S1},{S2},{S3},{S4},{S5}))" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p89">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p88"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p87"/>
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p89" org.eventb.core.prHyps=""/>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬S1=S3">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬S3=S4">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬S2=S5">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬S4=S5">
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬S1=S5">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬S3=S5">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="S={S1,S2,S3,S4,S5}">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬S1=S4">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬S2=S3">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="SIG[fst[∅ ⦂ ℙ(ROUTES)]]=(∅ ⦂ ℙ(S))"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬S2=S4">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬S1=S2">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="FRONT_MOVE_1/inv2/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p5"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p8"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p7"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p9"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p11,p12"/>
+                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11,p13" org.eventb.core.prInfHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15,p16"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p17"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p18"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p21"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p20"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p22"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p23"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p25"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p24"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p27"/>
+                                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p26"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p29"/>
+                                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p28"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p31"/>
+                                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p30"/>
+                                        <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p32"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p33"/>
+                                        <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p4"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p34"/>
+                                        <org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p6"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF20" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p35"/>
+                                        <org.eventb.core.prHypAction name="HIDE21" org.eventb.core.prHyps="p8"/>
+                                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p36"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p37"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p21"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p38"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p25"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p39"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p27"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p40"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p29"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p41"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p31"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p42"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p33"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p43"/>
+                                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p34"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p44"/>
+                                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p35"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with SIG[fst[rdy]]=GRN" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p46"/>
+                                                        <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p45"/>
+                                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with fst(r)=b" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p12">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51">
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p49"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p50"/>
+                                                                <org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p46,p48"/>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.prIdent name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="fst(r)=b"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="GRN⊆S">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="SIG[fst[rdy ∖ {r}]]=SIG[fst[rdy]] ∖ {SIG(b)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="⊤⇒r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="b∈dom(SIG)"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="SIG[fst[rdy]]=GRN"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="fst(r)∈dom(SIG)"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="r∈rdy⇒r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="r∈rdy∧fst(r)=b"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="SIG(fst(r))∈SIG[fst[rdy]]"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="SIG[fst[rdy ∖ {r}]]=SIG[fst[rdy]] ∖ {SIG(fst(r))}"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="SIG(b)∈GRN"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="SIG[fst[rdy ∖ {r}]]=GRN ∖ {SIG(b)}"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="r∈dom(fst)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="SIG(b)∈SIG[fst[rdy]]"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="r∈rdy"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL1"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="route_formation/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.psManual="true">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p5"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7"/>
+                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p9"/>
+                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p8"/>
+                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
+                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p10"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p12"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p14"/>
+                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p16"/>
+                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p15"/>
+                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p17"/>
+                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p18"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
+                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p19"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
+                        <org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p21"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
+                        <org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p23"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p26"/>
+                        <org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p25"/>
+                        <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p27"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p28"/>
+                        <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p5"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p29"/>
+                        <org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p7"/>
+                        <org.eventb.core.prHypAction name="FORWARD_INF20" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p30"/>
+                        <org.eventb.core.prHypAction name="HIDE21" org.eventb.core.prHyps="p9"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p31"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p32"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p16"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p33"/>
+                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p20"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p34"/>
+                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p22"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p35"/>
+                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p24"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p36"/>
+                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p26"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p37"/>
+                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p28"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p38"/>
+                                <org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p29"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p39"/>
+                                <org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p30"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with SIG[fst[rdy]]=GRN" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3 SMT2" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p2,p3,p1">
+                                            <org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
+                                            <org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3 SMT2"/>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.prIdent name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        <org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="resrt⊆ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="SIG[fst[rdy∪{r}]]=SIG[fst[rdy]]∪{SIG(fst(r))}"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="GRN⊆S">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="SIG[fst[rdy]]=GRN"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="SIG[fst[rdy∪{r}]]=GRN∪{SIG(fst(r))}"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+            <org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="resbl⊆BLOCKS">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="r∈resrt ∖ frm"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
+    </org.eventb.core.prProof>
+</org.eventb.core.prFile>
diff --git a/Train_B_Book/train_3.bps b/Train_B_Book/train_3.bps
new file mode 100644
index 0000000000000000000000000000000000000000..9887e32438a1b6dc59ea951d0175393e54dca9b7
--- /dev/null
+++ b/Train_B_Book/train_3.bps
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.psFile>
+    <org.eventb.core.psStatus name="thm1/THM" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="INITIALISATION/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/grd2/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/r/WWD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/r/WFIS" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/inv2/INV" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/grd1/GRD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/grd2/GRD" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/act3/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/act1/SIM" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="FRONT_MOVE_1/act2/SIM" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="route_formation/inv2/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="route_formation/act2/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psBroken="true" org.eventb.core.psManual="false"/>
+</org.eventb.core.psFile>
diff --git a/Train_B_Book/train_3.bum b/Train_B_Book/train_3.bum
new file mode 100644
index 0000000000000000000000000000000000000000..aab35a628b8d23f345d488e93ff6baa5511e2f28
--- /dev/null
+++ b/Train_B_Book/train_3.bum
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.machineFile org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter" org.eventb.texttools.text_lastmodified="1390827898024" org.eventb.texttools.text_representation="machine train_3 //&#10; refines train_2  sees train_ctx1&#10;&#10;variables resrt // set of reserved routes&#10;          resbl // set of reserved blocks&#10;          rsrtbl // reserved route of reserved block&#10;          OCC // occupied block&#10;          TRK // physical track&#10;          frm // set of formed routes&#10;          LBT // last block of the train&#10;          GRN // set of green signals&#10;&#10;&#10;invariants&#10;   @inv1 GRN ⊆ S&#10;   @inv2 SIG[fst[rdy]] = GRN&#10;  theorem @thm1 rdy◁fst ∈  rdy ↣ BLOCKS&#10;&#10;events&#10;  event INITIALISATION&#10;    then&#10;      @act1 resrt ≔ ∅&#10;      @act2 resbl ≔ ∅&#10;      @act3 rsrtbl ≔ ∅&#10;      @act4 OCC ≔ ∅&#10;      @act5 TRK ≔ ∅&#10;      @act6 frm ≔ ∅&#10;      @act7 LBT ≔ ∅&#10;      @act8 GRN ≔ ∅&#10;  end&#10;&#10;  event route_reservation extends route_reservation&#10;  end&#10;&#10;  event route_freeing extends route_freeing&#10;  end&#10;&#10;  event FRONT_MOVE_1 // the train enters its route&#10;  refines FRONT_MOVE_1&#10;    any b&#10;    where&#10;      @grd1 b ∈ dom(SIG) // was r:rdy&#10;      @grd2 SIG(b)∈GRN&#10;    with&#10;      @r r∈rdy ∧ fst(r)=b&#10;    then&#10;      @act1 OCC ≔ OCC ∪ {b}&#10;      @act2 LBT ≔ LBT ∪ {b}&#10;      @act3 GRN ≔ GRN ∖ {SIG(b)}&#10;  end&#10;&#10;  event FRONT_MOVE_2 // the front of the train moves&#10;  extends FRONT_MOVE_2&#10;  end&#10;&#10;  event BACK_MOVE_1 // the train leaves its route&#10;  extends BACK_MOVE_1&#10;  end&#10;&#10;  event BACK_MOVE_2 // the back of the train moves&#10;  extends BACK_MOVE_2&#10;  end&#10;&#10;  event point_positionning extends point_positionning&#10;  end&#10;&#10;  event route_formation refines route_formation&#10;    any r&#10;    where&#10;      @grd1 r∈resrt∖frm&#10;      @grd2 rsrtbl∼[{r}]◁nxt(r) = rsrtbl∼[{r}]◁TRK&#10;    then&#10;      @act1 frm≔frm∪{r}&#10;      @act2 GRN≔GRN∪{SIG(fst(r))}&#10;  end&#10;end&#10;" version="5">
+<org.eventb.core.refinesMachine name="internal_refinesMachine1" org.eventb.core.target="train_2"/>
+<org.eventb.core.seesContext name="internal_seesContext1" org.eventb.core.target="train_ctx1"/>
+<org.eventb.core.event name="internal_evt1" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="INITIALISATION">
+<org.eventb.core.action name="internal_act1" org.eventb.core.assignment="resrt ≔ ∅" org.eventb.core.label="act1"/>
+<org.eventb.core.action name="internal_act2" org.eventb.core.assignment="resbl ≔ ∅" org.eventb.core.label="act2"/>
+<org.eventb.core.action name="internal_act3" org.eventb.core.assignment="rsrtbl ≔ ∅" org.eventb.core.label="act3"/>
+<org.eventb.core.action name="internal_act4" org.eventb.core.assignment="OCC ≔ ∅" org.eventb.core.label="act4"/>
+<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="TRK ≔ ∅" org.eventb.core.label="act5"/>
+<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="frm ≔ ∅" org.eventb.core.label="act6"/>
+<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="LBT ≔ ∅" org.eventb.core.label="act7"/>
+<org.eventb.core.action name="internal_element4" org.eventb.core.assignment="GRN ≔ ∅" org.eventb.core.label="act8"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element1" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation">
+<org.eventb.core.refinesEvent name="internal_refinesEvent1" org.eventb.core.target="route_reservation"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element2" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing">
+<org.eventb.core.refinesEvent name="internal_refinesEvent1" org.eventb.core.target="route_freeing"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element3" org.eventb.core.comment="the train enters its route" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="FRONT_MOVE_1">
+<org.eventb.core.refinesEvent name="internal_refinesEvent1" org.eventb.core.target="FRONT_MOVE_1"/>
+<org.eventb.core.parameter name="internal_element1" org.eventb.core.identifier="b"/>
+<org.eventb.core.guard name="internal_element1" org.eventb.core.comment="was r:rdy" org.eventb.core.label="grd1" org.eventb.core.predicate="b ∈ dom(SIG)"/>
+<org.eventb.core.guard name="internal_element2" org.eventb.core.label="grd2" org.eventb.core.predicate="SIG(b)∈GRN"/>
+<org.eventb.core.witness name="internal_wit1" org.eventb.core.label="r" org.eventb.core.predicate="r∈rdy ∧ fst(r)=b"/>
+<org.eventb.core.action name="internal_element1" org.eventb.core.assignment="OCC ≔ OCC ∪ {b}" org.eventb.core.label="act1"/>
+<org.eventb.core.action name="internal_element2" org.eventb.core.assignment="LBT ≔ LBT ∪ {b}" org.eventb.core.label="act2"/>
+<org.eventb.core.action name="internal_element3" org.eventb.core.assignment="GRN ≔ GRN ∖ {SIG(b)}" org.eventb.core.label="act3"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element4" org.eventb.core.comment="the front of the train moves" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_2">
+<org.eventb.core.refinesEvent name="internal_refinesEvent1" org.eventb.core.target="FRONT_MOVE_2"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element5" org.eventb.core.comment="the train leaves its route" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_1">
+<org.eventb.core.refinesEvent name="internal_refinesEvent1" org.eventb.core.target="BACK_MOVE_1"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element6" org.eventb.core.comment="the back of the train moves" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_2">
+<org.eventb.core.refinesEvent name="internal_refinesEvent1" org.eventb.core.target="BACK_MOVE_2"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="internal_element7" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="point_positionning">
+<org.eventb.core.refinesEvent name="internal_element1" org.eventb.core.target="point_positionning"/>
+</org.eventb.core.event>
+<org.eventb.core.invariant name="internal_element1I" org.eventb.core.label="inv1" org.eventb.core.predicate="GRN ⊆ S"/>
+<org.eventb.core.invariant name="internal_element2I" org.eventb.core.label="inv2" org.eventb.core.predicate="SIG[fst[rdy]] = GRN"/>
+<org.eventb.core.invariant name="internal_element1T" org.eventb.core.label="thm1" org.eventb.core.predicate="rdy◁fst ∈  rdy ↣ BLOCKS" org.eventb.core.theorem="true"/>
+<org.eventb.core.variable name="internal_var1" org.eventb.core.comment="set of reserved routes" org.eventb.core.identifier="resrt"/>
+<org.eventb.core.variable name="internal_var2" org.eventb.core.comment="set of reserved blocks" org.eventb.core.identifier="resbl"/>
+<org.eventb.core.variable name="internal_var3" org.eventb.core.comment="reserved route of reserved block" org.eventb.core.identifier="rsrtbl"/>
+<org.eventb.core.variable name="internal_var4" org.eventb.core.comment="occupied block" org.eventb.core.identifier="OCC"/>
+<org.eventb.core.variable name="internal_element1" org.eventb.core.comment="physical track" org.eventb.core.identifier="TRK"/>
+<org.eventb.core.variable name="internal_element2" org.eventb.core.comment="set of formed routes" org.eventb.core.identifier="frm"/>
+<org.eventb.core.variable name="internal_element3" org.eventb.core.comment="last block of the train" org.eventb.core.identifier="LBT"/>
+<org.eventb.core.variable name="internal_element5" org.eventb.core.comment="set of green signals" org.eventb.core.identifier="GRN"/>
+<org.eventb.core.event name="internal_refinesMachine2" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="route_formation">
+<org.eventb.core.refinesEvent name="," org.eventb.core.target="route_formation"/>
+<org.eventb.core.parameter name="'" org.eventb.core.identifier="r"/>
+<org.eventb.core.guard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt∖frm"/>
+<org.eventb.core.guard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="rsrtbl∼[{r}]◁nxt(r) = rsrtbl∼[{r}]◁TRK"/>
+<org.eventb.core.action name="*" org.eventb.core.assignment="frm≔frm∪{r}" org.eventb.core.label="act1"/>
+<org.eventb.core.action name="+" org.eventb.core.assignment="GRN≔GRN∪{SIG(fst(r))}" org.eventb.core.label="act2"/>
+</org.eventb.core.event>
+</org.eventb.core.machineFile>
diff --git a/Train_B_Book/train_3_prob.bcm b/Train_B_Book/train_3_prob.bcm
new file mode 100644
index 0000000000000000000000000000000000000000..ccb510a29162c7eb34e04a488ac30c6a6fd8870e
--- /dev/null
+++ b/Train_B_Book/train_3_prob.bcm
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scMachineFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter">
+    <org.eventb.core.scRefinesMachine name="'" org.eventb.core.scTarget="/Train/train_3.bcm" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.refinesMachine#'"/>
+    <org.eventb.core.scSeesContext name="(" org.eventb.core.scTarget="/Train/train_ctx1_beebook.bcc" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.seesContext#_SsCIwIdnEeOcUOZ5WAG6MA"/>
+    <org.eventb.core.scInternalContext name="train_ctx0">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx1">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.extendsContext#internal_extendsContext1"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm1" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scCarrierSet name="S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.carrierSet#internal_cst1" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.scConstant name="SIG" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx0_beebook">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.extendsContext#'"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm44" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx2" org.eventb.core.label="axm45" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAYdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx3" org.eventb.core.label="compute_rtbl_from_nxt" org.eventb.core.predicate="rtbl={b⦂BLOCKS,r⦂ROUTES·r∈dom(nxt)∧(b∈dom(nxt(r))∨b∈ran(nxt(r))) ∣ b ↦ r}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_tx3w0YdrEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx4" org.eventb.core.label="axm40" org.eventb.core.predicate="nxt={R1 ↦ {L ↦ A,A ↦ B,B ↦ C},R2 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ E,E ↦ F,F ↦ G},R3 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ K,K ↦ J,J ↦ N},R4 ↦ {M ↦ H,H ↦ I,I ↦ K,K ↦ F,F ↦ G},R5 ↦ {M ↦ H,H ↦ I,I ↦ J,J ↦ N},R6 ↦ {C ↦ B,B ↦ A,A ↦ L},R7 ↦ {G ↦ F,F ↦ E,E ↦ D,D ↦ B,B ↦ A,A ↦ L},R8 ↦ {N ↦ J,J ↦ K,K ↦ D,D ↦ B,B ↦ A,A ↦ L},R9 ↦ {G ↦ F,F ↦ K,K ↦ I,I ↦ H,H ↦ M},R10 ↦ {N ↦ J,J ↦ I,I ↦ H,H ↦ M}}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LA4doEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx5" org.eventb.core.label="axm41" org.eventb.core.predicate="fst={R1 ↦ L,R2 ↦ L,R3 ↦ L,R4 ↦ M,R5 ↦ M,R6 ↦ C,R7 ↦ G,R8 ↦ N,R9 ↦ G,R10 ↦ N}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LBIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx6" org.eventb.core.label="axm42" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ G,R3 ↦ N,R4 ↦ G,R5 ↦ N,R6 ↦ L,R7 ↦ L,R8 ↦ L,R9 ↦ M,R10 ↦ M}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5yEIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="A" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwIdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="B" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwYdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="C" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwodoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="D" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uw4doEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="E" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uxIdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="F" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uxYdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="G" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="H" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="I" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0odoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="J" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V04doEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="K" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V1IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="L" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V1YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="M" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="N" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="R10" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j9YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R1" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384odoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R2" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3844doEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R3" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj385IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R4" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj385YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R5" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R6" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R7" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8odoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R8" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j84doEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R9" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j9IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx1_beebook">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx1.bcc|org.eventb.core.scContextFile#train_ctx1" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.extendsContext#_5SetQIdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.scExtendsContext name="(" org.eventb.core.scTarget="/Train/train_ctx0_beebook.bcc|org.eventb.core.scContextFile#train_ctx0_beebook" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.extendsContext#_5SetQYdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.scAxiom name="train_ctx0_beebool" org.eventb.core.label="axm2" org.eventb.core.predicate="card(S)=5" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5SfUU4drEeOYLZrGGNvfWA" org.eventb.core.theorem="true"/>
+        <org.eventb.core.scAxiom name="train_ctx0_beeboom" org.eventb.core.label="axm3" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5Sf7YIdrEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx0_beeboon" org.eventb.core.label="axm4" org.eventb.core.predicate="SIG={L ↦ S1,M ↦ S2,N ↦ S3,C ↦ S4,G ↦ S5}" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5Sf7YYdrEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="S1" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SetQodrEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+        <org.eventb.core.scConstant name="S2" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SetQ4drEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+        <org.eventb.core.scConstant name="S3" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SfUUIdrEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+        <org.eventb.core.scConstant name="S4" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SfUUYdrEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+        <org.eventb.core.scConstant name="S5" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SfUUodrEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInvariant name="train_ctx1" org.eventb.core.label="inv1" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx2" org.eventb.core.label="inv2" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx3" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx4" org.eventb.core.label="inv5" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx5" org.eventb.core.label="inv4" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx6" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx7" org.eventb.core.label="inv7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx8" org.eventb.core.label="inv8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx9" org.eventb.core.label="inv1" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx:" org.eventb.core.label="inv2" org.eventb.core.predicate="frm⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx;" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx=" org.eventb.core.label="inv4" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx&gt;" org.eventb.core.label="inv5" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx?" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx@" org.eventb.core.label="inv7" org.eventb.core.predicate="LBT⊆OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxA" org.eventb.core.label="inv8" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxB" org.eventb.core.label="thm1" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxC" org.eventb.core.label="thm2" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxD" org.eventb.core.label="thm3" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxE" org.eventb.core.label="inv4" org.eventb.core.predicate="rdy⊆frm" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_refinesMachine3" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxF" org.eventb.core.label="inv2" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxG" org.eventb.core.label="inv3" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxH" org.eventb.core.label="inv1" org.eventb.core.predicate="GRN⊆S" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxI" org.eventb.core.label="inv2" org.eventb.core.predicate="SIG[fst[rdy]]=GRN" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxJ" org.eventb.core.label="thm1" org.eventb.core.predicate="rdy ◁ fst∈rdy ↣ BLOCKS" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element1T" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scVariable name="rdy" org.eventb.core.abstract="false" org.eventb.core.concrete="false" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.variable#internal_element4" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="resrt" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.variable#internal_var1" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="OCC" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.variable#internal_var4" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="resbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.variable#internal_var2" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="GRN" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.variable#internal_element5" org.eventb.core.type="ℙ(S)"/>
+    <org.eventb.core.scVariable name="frm" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.variable#internal_element2" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="TRK" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.variable#internal_element1" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+    <org.eventb.core.scVariable name="LBT" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.variable#internal_element3" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="rsrtbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.variable#internal_var3" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+    <org.eventb.core.scEvent name="train_ctx1_beebool" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.event#internal_seesContext2">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_3.bcm|org.eventb.core.scMachineFile#train_3|org.eventb.core.scEvent#train_ctxK" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.event#internal_seesContext2"/>
+        <org.eventb.core.scAction name="(" org.eventb.core.assignment="resrt ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act1"/>
+        <org.eventb.core.scAction name=")" org.eventb.core.assignment="resbl ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act2"/>
+        <org.eventb.core.scAction name="*" org.eventb.core.assignment="rsrtbl ≔ ∅ ⦂ ℙ(BLOCKS×ROUTES)" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act3"/>
+        <org.eventb.core.scAction name="+" org.eventb.core.assignment="OCC ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act4"/>
+        <org.eventb.core.scAction name="," org.eventb.core.assignment="TRK ≔ ∅ ⦂ ℙ(BLOCKS×BLOCKS)" org.eventb.core.label="act5" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="-" org.eventb.core.assignment="frm ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act6" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="." org.eventb.core.assignment="LBT ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act7" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="/" org.eventb.core.assignment="GRN ≔ ∅ ⦂ ℙ(S)" org.eventb.core.label="act8" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element4"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx1_beeboom" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.event#internal_seesContext3">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_3.bcm|org.eventb.core.scMachineFile#train_3|org.eventb.core.scEvent#train_ctxL" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.event#internal_seesContext3|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="rsrtbl ≔ rsrtbl∪(rtbl ▷ {r})" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="u" org.eventb.core.assignment="resbl ≔ resbl∪rtbl∼[{r}]" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx1_beeboon" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.event#internal_seesContext4">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_3.bcm|org.eventb.core.scMachineFile#train_3|org.eventb.core.scEvent#train_ctxM" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.event#internal_seesContext4|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt ∖ {r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="frm ≔ frm ∖ {r}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx1_beebooo" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_1" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.event#internal_seesContext5">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_3.bcm|org.eventb.core.scMachineFile#train_3|org.eventb.core.scEvent#train_ctxN" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.event#internal_seesContext5|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈dom(SIG)" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="SIG(b)∈GRN" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC∪{b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="LBT ≔ LBT∪{b}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="GRN ≔ GRN ∖ {SIG(b)}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx1_beeboop" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_2" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.event#internal_seesContext6">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_3.bcm|org.eventb.core.scMachineFile#train_3|org.eventb.core.scEvent#train_ctxO" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.event#internal_seesContext6|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC∪{TRK(b)}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx1_beebooq" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_1" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.event#internal_seesContext7">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_3.bcm|org.eventb.core.scMachineFile#train_3|org.eventb.core.scEvent#train_ctxP" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.event#internal_seesContext7|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∉dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="f" org.eventb.core.assignment="LBT ≔ LBT ∖ {b}" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx1_beeboor" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_2" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.event#internal_seesContext8">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_3.bcm|org.eventb.core.scMachineFile#train_3|org.eventb.core.scEvent#train_ctxQ" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.event#internal_seesContext8|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="f" org.eventb.core.assignment="LBT ≔ (LBT ∖ {b})∪{TRK(b)}" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx1_beeboos" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="point_positionning" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.event#internal_seesContext9">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_3.bcm|org.eventb.core.scMachineFile#train_3|org.eventb.core.scEvent#train_ctxR" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.event#internal_seesContext9|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="TRK ≔ (dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx1_beeboot" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_formation" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.event#internal_seesContext:">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_3.bcm|org.eventb.core.scMachineFile#train_3|org.eventb.core.scEvent#train_ctxS" org.eventb.core.source="/Train/train_3_prob.bum|org.eventb.core.machineFile#train_3_prob|org.eventb.core.event#internal_seesContext:|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.guard#(" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.guard#)" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="frm ≔ frm∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.action#*"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="GRN ≔ GRN∪{SIG(fst(r))}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.action#+"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.parameter#'" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+</org.eventb.core.scMachineFile>
diff --git a/Train_B_Book/train_3_prob.bpo b/Train_B_Book/train_3_prob.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..c8a6489059377112a4f668babe84dc1d5e4d908c
--- /dev/null
+++ b/Train_B_Book/train_3_prob.bpo
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="1">
+    <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="1">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTET" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEU" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEV" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEW" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEX" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEY" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEZ" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="ROUTE[" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+        <org.eventb.core.poPredicate name="ROUTE\" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poPredicate name="ROUTE]" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poPredicate name="ROUTE^" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poPredicate name="ROUTE_" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poPredicate name="ROUTE`" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+        <org.eventb.core.poIdentifier name="S" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.poIdentifier name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        <org.eventb.core.poPredicate name="ROUTEa" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poIdentifier name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="J" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="K" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="L" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="M" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="N" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="R10" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R2" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R3" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R4" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R5" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R6" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R7" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R8" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R9" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poPredicate name="ROUTEb" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEc" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAYdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEd" org.eventb.core.predicate="rtbl={b⦂BLOCKS,r⦂ROUTES·r∈dom(nxt)∧(b∈dom(nxt(r))∨b∈ran(nxt(r))) ∣ b ↦ r}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_tx3w0YdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poPredicate name="ROUTEe" org.eventb.core.predicate="nxt={R1 ↦ {L ↦ A,A ↦ B,B ↦ C},R2 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ E,E ↦ F,F ↦ G},R3 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ K,K ↦ J,J ↦ N},R4 ↦ {M ↦ H,H ↦ I,I ↦ K,K ↦ F,F ↦ G},R5 ↦ {M ↦ H,H ↦ I,I ↦ J,J ↦ N},R6 ↦ {C ↦ B,B ↦ A,A ↦ L},R7 ↦ {G ↦ F,F ↦ E,E ↦ D,D ↦ B,B ↦ A,A ↦ L},R8 ↦ {N ↦ J,J ↦ K,K ↦ D,D ↦ B,B ↦ A,A ↦ L},R9 ↦ {G ↦ F,F ↦ K,K ↦ I,I ↦ H,H ↦ M},R10 ↦ {N ↦ J,J ↦ I,I ↦ H,H ↦ M}}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LA4doEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEf" org.eventb.core.predicate="fst={R1 ↦ L,R2 ↦ L,R3 ↦ L,R4 ↦ M,R5 ↦ M,R6 ↦ C,R7 ↦ G,R8 ↦ N,R9 ↦ G,R10 ↦ N}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LBIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEg" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ G,R3 ↦ N,R4 ↦ G,R5 ↦ N,R6 ↦ L,R7 ↦ L,R8 ↦ L,R9 ↦ M,R10 ↦ M}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5yEIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poIdentifier name="S1" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S2" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S3" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S4" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S5" org.eventb.core.type="S"/>
+        <org.eventb.core.poPredicate name="ROUTEh" org.eventb.core.predicate="card(S)=5" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5SfUU4drEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poPredicate name="ROUTEi" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5Sf7YIdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poPredicate name="ROUTEj" org.eventb.core.predicate="SIG={L ↦ S1,M ↦ S2,N ↦ S3,C ↦ S4,G ↦ S5}" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5Sf7YYdrEeOYLZrGGNvfWA"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/Train/train_3_prob.bpo|org.eventb.core.poFile#train_3_prob|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="1">
+        <org.eventb.core.poIdentifier name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="GRN" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.poIdentifier name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poPredicate name="rsrtbm" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I"/>
+        <org.eventb.core.poPredicate name="rsrtbn" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I"/>
+        <org.eventb.core.poPredicate name="rsrtbo" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I"/>
+        <org.eventb.core.poPredicate name="rsrtbp" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I"/>
+        <org.eventb.core.poPredicate name="rsrtbq" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poPredicate name="rsrtbr" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtbs" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtbt" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtbu" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtbv" org.eventb.core.predicate="frm⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtbw" org.eventb.core.predicate="rsrtbl[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtbx" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poPredicate name="rsrtby" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I"/>
+        <org.eventb.core.poPredicate name="rsrtbz" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poPredicate name="rsrtb{" org.eventb.core.predicate="LBT⊆OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I"/>
+        <org.eventb.core.poPredicate name="rsrtb|" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poPredicate name="rsrtb}" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T"/>
+        <org.eventb.core.poPredicate name="rsrtb~" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K"/>
+        <org.eventb.core.poPredicate name="rsrtc'" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L"/>
+        <org.eventb.core.poPredicate name="rsrtc(" org.eventb.core.predicate="rdy⊆frm" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_refinesMachine3"/>
+        <org.eventb.core.poPredicate name="rsrtc)" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtc*" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtc+" org.eventb.core.predicate="GRN⊆S" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtc," org.eventb.core.predicate="SIG[fst[rdy]]=GRN" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtc-" org.eventb.core.predicate="rdy ◁ fst∈rdy ↣ BLOCKS" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element1T"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx1_beebool" org.eventb.core.parentSet="/Train/train_3_prob.bpo|org.eventb.core.poFile#train_3_prob|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="TRK'" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="GRN'" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx1_beebool" org.eventb.core.parentSet="/Train/train_3_prob.bpo|org.eventb.core.poFile#train_3_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx1_beebool" org.eventb.core.poStamp="0"/>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx1_beeboom" org.eventb.core.parentSet="/Train/train_3_prob.bpo|org.eventb.core.poFile#train_3_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx1_beeboom" org.eventb.core.parentSet="/Train/train_3_prob.bpo|org.eventb.core.poFile#train_3_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx1_beeboom" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx1_beeboon" org.eventb.core.parentSet="/Train/train_3_prob.bpo|org.eventb.core.poFile#train_3_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx1_beeboon" org.eventb.core.parentSet="/Train/train_3_prob.bpo|org.eventb.core.poFile#train_3_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx1_beeboon" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx1_beebooo" org.eventb.core.parentSet="/Train/train_3_prob.bpo|org.eventb.core.poFile#train_3_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="GRN'" org.eventb.core.type="ℙ(S)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx1_beebooo" org.eventb.core.parentSet="/Train/train_3_prob.bpo|org.eventb.core.poFile#train_3_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx1_beebooo" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈dom(SIG)" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="SIG(b)∈GRN" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx1_beeboop" org.eventb.core.parentSet="/Train/train_3_prob.bpo|org.eventb.core.poFile#train_3_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx1_beeboop" org.eventb.core.parentSet="/Train/train_3_prob.bpo|org.eventb.core.poFile#train_3_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx1_beeboop" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx1_beebooq" org.eventb.core.parentSet="/Train/train_3_prob.bpo|org.eventb.core.poFile#train_3_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx1_beebooq" org.eventb.core.parentSet="/Train/train_3_prob.bpo|org.eventb.core.poFile#train_3_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx1_beebooq" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∉dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx1_beeboor" org.eventb.core.parentSet="/Train/train_3_prob.bpo|org.eventb.core.poFile#train_3_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx1_beeboor" org.eventb.core.parentSet="/Train/train_3_prob.bpo|org.eventb.core.poFile#train_3_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx1_beeboor" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="TRK(b)∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx1_beeboos" org.eventb.core.parentSet="/Train/train_3_prob.bpo|org.eventb.core.poFile#train_3_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="TRK'" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx1_beeboos" org.eventb.core.parentSet="/Train/train_3_prob.bpo|org.eventb.core.poFile#train_3_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx1_beeboos" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx1_beeboot" org.eventb.core.parentSet="/Train/train_3_prob.bpo|org.eventb.core.poFile#train_3_prob|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="GRN'" org.eventb.core.type="ℙ(S)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx1_beeboot" org.eventb.core.parentSet="/Train/train_3_prob.bpo|org.eventb.core.poFile#train_3_prob|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx1_beeboot" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.guard#("/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.guard#)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_3_prob.bpo|org.eventb.core.poFile#train_3_prob|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="1"/>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_3_prob.bpr b/Train_B_Book/train_3_prob.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..d13ec2a20267852024def0758a1effc175861a98
--- /dev/null
+++ b/Train_B_Book/train_3_prob.bpr
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.prFile version="1"/>
\ No newline at end of file
diff --git a/Train_B_Book/train_3_prob.bps b/Train_B_Book/train_3_prob.bps
new file mode 100644
index 0000000000000000000000000000000000000000..ced513e210f482c3c7cafb26e5e709e8b27ac922
--- /dev/null
+++ b/Train_B_Book/train_3_prob.bps
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.psFile/>
\ No newline at end of file
diff --git a/Train_B_Book/train_3_prob.bum b/Train_B_Book/train_3_prob.bum
new file mode 100644
index 0000000000000000000000000000000000000000..e8a52fdf1e8b0f5255667ad87323bb1b949f39d6
--- /dev/null
+++ b/Train_B_Book/train_3_prob.bum
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.machineFile org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter" org.eventb.texttools.text_lastmodified="1390836345645" org.eventb.texttools.text_representation="machine train_3_prob refines train_3  sees train_ctx1_prob&#10;&#10;variables resrt // set of reserved routes&#10;          resbl // set of reserved blocks&#10;          rsrtbl // reserved route of reserved block&#10;          OCC // occupied block&#10;          TRK // physical track&#10;          frm // set of formed routes&#10;          LBT // last block of the train&#10;          GRN // set of green signals&#10;&#10;&#10;events&#10;  event INITIALISATION extends INITIALISATION&#10;  end&#10;&#10;  event route_reservation extends route_reservation&#10;  end&#10;&#10;  event route_freeing extends route_freeing&#10;  end&#10;&#10;  event FRONT_MOVE_1 // the train enters its route&#10;  extends FRONT_MOVE_1&#10;  end&#10;&#10;  event FRONT_MOVE_2 // the front of the train moves&#10;  extends FRONT_MOVE_2&#10;  end&#10;&#10;  event BACK_MOVE_1 // the train leaves its route&#10;  extends BACK_MOVE_1&#10;  end&#10;&#10;  event BACK_MOVE_2 // the back of the train moves&#10;  extends BACK_MOVE_2&#10;  end&#10;&#10;  event point_positionning extends point_positionning&#10;  end&#10;&#10;  event route_formation extends route_formation&#10;  end&#10;end&#10;" version="5">
+    <org.eventb.core.refinesMachine name="'" org.eventb.core.target="train_3"/>
+    <org.eventb.core.seesContext name="_SsCIwIdnEeOcUOZ5WAG6MA" org.eventb.core.target="train_ctx1_beebook"/>
+    <org.eventb.core.variable name="internal_var1" org.eventb.core.comment="set of reserved routes" org.eventb.core.identifier="resrt"/>
+    <org.eventb.core.variable name="internal_var2" org.eventb.core.comment="set of reserved blocks" org.eventb.core.identifier="resbl"/>
+    <org.eventb.core.variable name="internal_var3" org.eventb.core.comment="reserved route of reserved block" org.eventb.core.identifier="rsrtbl"/>
+    <org.eventb.core.variable name="internal_var4" org.eventb.core.comment="occupied block" org.eventb.core.identifier="OCC"/>
+    <org.eventb.core.variable name="internal_element1" org.eventb.core.comment="physical track" org.eventb.core.identifier="TRK"/>
+    <org.eventb.core.variable name="internal_element2" org.eventb.core.comment="set of formed routes" org.eventb.core.identifier="frm"/>
+    <org.eventb.core.variable name="internal_element3" org.eventb.core.comment="last block of the train" org.eventb.core.identifier="LBT"/>
+    <org.eventb.core.variable name="internal_element5" org.eventb.core.comment="set of green signals" org.eventb.core.identifier="GRN"/>
+    <org.eventb.core.event name="internal_seesContext2" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION"/>
+    <org.eventb.core.event name="internal_seesContext3" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation">
+        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="route_reservation"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_seesContext4" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing">
+        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="route_freeing"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_seesContext5" org.eventb.core.comment="the train enters its route" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_1">
+        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="FRONT_MOVE_1"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_seesContext6" org.eventb.core.comment="the front of the train moves" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_2">
+        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="FRONT_MOVE_2"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_seesContext7" org.eventb.core.comment="the train leaves its route" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_1">
+        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="BACK_MOVE_1"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_seesContext8" org.eventb.core.comment="the back of the train moves" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_2">
+        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="BACK_MOVE_2"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_seesContext9" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="point_positionning">
+        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="point_positionning"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_seesContext:" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_formation">
+        <org.eventb.core.refinesEvent name="'" org.eventb.core.target="route_formation"/>
+    </org.eventb.core.event>
+</org.eventb.core.machineFile>
diff --git a/Train_B_Book/train_4.bcm b/Train_B_Book/train_4.bcm
new file mode 100644
index 0000000000000000000000000000000000000000..90be4b3e7ee0ce76ecfdac8d9ec93c62e8111725
--- /dev/null
+++ b/Train_B_Book/train_4.bcm
@@ -0,0 +1,209 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scMachineFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter">
+    <org.eventb.core.scRefinesMachine name="'" org.eventb.core.scTarget="/Train/train_3.bcm" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.refinesMachine#internal_refinesMachine1"/>
+    <org.eventb.core.scSeesContext name="(" org.eventb.core.scTarget="/Train/train_ctx2_beebook.bcc" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.seesContext#_fnB_kIdnEeOcUOZ5WAG6MA"/>
+    <org.eventb.core.scInternalContext name="train_ctx0">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx1">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.extendsContext#internal_extendsContext1"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm1" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scCarrierSet name="S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.carrierSet#internal_cst1" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.scConstant name="SIG" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx2">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx1.bcc|org.eventb.core.scContextFile#train_ctx1" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.extendsContext#internal_extendsContext1"/>
+        <org.eventb.core.scAxiom name="train_ctx2" org.eventb.core.label="axm1" org.eventb.core.predicate="blpt⊆BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx3" org.eventb.core.label="axm2" org.eventb.core.predicate="lft∈blpt → BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx4" org.eventb.core.label="axm3" org.eventb.core.predicate="rht∈blpt → BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx5" org.eventb.core.label="axm4" org.eventb.core.predicate="lft∩rht=(∅ ⦂ ℙ(BLOCKS×BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx6" org.eventb.core.label="axm5" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx7" org.eventb.core.label="axm6" org.eventb.core.predicate="blpt∩ran(fst)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx8" org.eventb.core.label="axm7" org.eventb.core.predicate="blpt∩ran(lst)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rht" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.scConstant name="lft" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.scConstant name="blpt" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx0_beebook">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.extendsContext#'"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm44" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx2" org.eventb.core.label="axm45" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAYdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx3" org.eventb.core.label="compute_rtbl_from_nxt" org.eventb.core.predicate="rtbl={b⦂BLOCKS,r⦂ROUTES·r∈dom(nxt)∧(b∈dom(nxt(r))∨b∈ran(nxt(r))) ∣ b ↦ r}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_tx3w0YdrEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx4" org.eventb.core.label="axm40" org.eventb.core.predicate="nxt={R1 ↦ {L ↦ A,A ↦ B,B ↦ C},R2 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ E,E ↦ F,F ↦ G},R3 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ K,K ↦ J,J ↦ N},R4 ↦ {M ↦ H,H ↦ I,I ↦ K,K ↦ F,F ↦ G},R5 ↦ {M ↦ H,H ↦ I,I ↦ J,J ↦ N},R6 ↦ {C ↦ B,B ↦ A,A ↦ L},R7 ↦ {G ↦ F,F ↦ E,E ↦ D,D ↦ B,B ↦ A,A ↦ L},R8 ↦ {N ↦ J,J ↦ K,K ↦ D,D ↦ B,B ↦ A,A ↦ L},R9 ↦ {G ↦ F,F ↦ K,K ↦ I,I ↦ H,H ↦ M},R10 ↦ {N ↦ J,J ↦ I,I ↦ H,H ↦ M}}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LA4doEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx5" org.eventb.core.label="axm41" org.eventb.core.predicate="fst={R1 ↦ L,R2 ↦ L,R3 ↦ L,R4 ↦ M,R5 ↦ M,R6 ↦ C,R7 ↦ G,R8 ↦ N,R9 ↦ G,R10 ↦ N}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LBIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx6" org.eventb.core.label="axm42" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ G,R3 ↦ N,R4 ↦ G,R5 ↦ N,R6 ↦ L,R7 ↦ L,R8 ↦ L,R9 ↦ M,R10 ↦ M}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5yEIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="A" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwIdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="B" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwYdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="C" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwodoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="D" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uw4doEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="E" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uxIdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="F" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uxYdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="G" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="H" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="I" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0odoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="J" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V04doEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="K" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V1IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="L" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V1YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="M" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="N" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="R10" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j9YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R1" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384odoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R2" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3844doEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R3" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj385IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R4" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj385YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R5" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R6" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R7" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8odoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R8" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j84doEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R9" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j9IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx1_beebook">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx1.bcc|org.eventb.core.scContextFile#train_ctx1" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.extendsContext#_5SetQIdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.scExtendsContext name="(" org.eventb.core.scTarget="/Train/train_ctx0_beebook.bcc|org.eventb.core.scContextFile#train_ctx0_beebook" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.extendsContext#_5SetQYdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.scAxiom name="train_ctx0_beebool" org.eventb.core.label="axm2" org.eventb.core.predicate="card(S)=5" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5SfUU4drEeOYLZrGGNvfWA" org.eventb.core.theorem="true"/>
+        <org.eventb.core.scAxiom name="train_ctx0_beeboom" org.eventb.core.label="axm3" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5Sf7YIdrEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx0_beeboon" org.eventb.core.label="axm4" org.eventb.core.predicate="SIG={L ↦ S1,M ↦ S2,N ↦ S3,C ↦ S4,G ↦ S5}" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5Sf7YYdrEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="S1" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SetQodrEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+        <org.eventb.core.scConstant name="S2" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SetQ4drEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+        <org.eventb.core.scConstant name="S3" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SfUUIdrEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+        <org.eventb.core.scConstant name="S4" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SfUUYdrEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+        <org.eventb.core.scConstant name="S5" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SfUUodrEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx2_beebook">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx2.bcc|org.eventb.core.scContextFile#train_ctx2" org.eventb.core.source="/Train/train_ctx2_beebook.buc|org.eventb.core.contextFile#train_ctx2_beebook|org.eventb.core.extendsContext#_MRgjEIdsEeOYLZrGGNvfWA"/>
+        <org.eventb.core.scExtendsContext name="(" org.eventb.core.scTarget="/Train/train_ctx1_beebook.bcc|org.eventb.core.scContextFile#train_ctx1_beebook" org.eventb.core.source="/Train/train_ctx2_beebook.buc|org.eventb.core.contextFile#train_ctx2_beebook|org.eventb.core.extendsContext#_MRgjEYdsEeOYLZrGGNvfWA"/>
+        <org.eventb.core.scAxiom name="train_ctx1_beebool" org.eventb.core.label="prob_axm1" org.eventb.core.predicate="blpt={B,D,F,I,J}" org.eventb.core.source="/Train/train_ctx2_beebook.buc|org.eventb.core.contextFile#train_ctx2_beebook|org.eventb.core.axiom#_MRgjEodsEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInvariant name="train_ctx1" org.eventb.core.label="inv1" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx2" org.eventb.core.label="inv2" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx3" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx4" org.eventb.core.label="inv5" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx5" org.eventb.core.label="inv4" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx6" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx7" org.eventb.core.label="inv7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx8" org.eventb.core.label="inv8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx9" org.eventb.core.label="inv1" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx:" org.eventb.core.label="inv2" org.eventb.core.predicate="frm⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx;" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx=" org.eventb.core.label="inv4" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx&gt;" org.eventb.core.label="inv5" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx?" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx@" org.eventb.core.label="inv7" org.eventb.core.predicate="LBT⊆OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxA" org.eventb.core.label="inv8" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxB" org.eventb.core.label="thm1" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxC" org.eventb.core.label="thm2" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxD" org.eventb.core.label="thm3" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxE" org.eventb.core.label="inv4" org.eventb.core.predicate="rdy⊆frm" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_refinesMachine3" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxF" org.eventb.core.label="inv2" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxG" org.eventb.core.label="inv3" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxH" org.eventb.core.label="inv1" org.eventb.core.predicate="GRN⊆S" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxI" org.eventb.core.label="inv2" org.eventb.core.predicate="SIG[fst[rdy]]=GRN" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxJ" org.eventb.core.label="thm1" org.eventb.core.predicate="rdy ◁ fst∈rdy ↣ BLOCKS" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element1T" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctx2_beebool" org.eventb.core.label="inv1" org.eventb.core.predicate="(lft∪rht)∩(TRK∪TRK∼)∈blpt ⇸ BLOCKS" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scVariable name="rdy" org.eventb.core.abstract="false" org.eventb.core.concrete="false" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.variable#internal_element4" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="resrt" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.variable#internal_var1" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="OCC" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.variable#internal_var4" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="resbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.variable#internal_var2" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="GRN" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.variable#internal_element5" org.eventb.core.type="ℙ(S)"/>
+    <org.eventb.core.scVariable name="frm" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.variable#internal_element2" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="TRK" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.variable#internal_element1" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+    <org.eventb.core.scVariable name="LBT" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.variable#internal_element3" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="rsrtbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.variable#internal_var3" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+    <org.eventb.core.scEvent name="train_ctx2_beeboom" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="INITIALISATION" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_evt1">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_3.bcm|org.eventb.core.scMachineFile#train_3|org.eventb.core.scEvent#train_ctxK" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.scAction name="(" org.eventb.core.assignment="resrt ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act1"/>
+        <org.eventb.core.scAction name=")" org.eventb.core.assignment="resbl ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act2"/>
+        <org.eventb.core.scAction name="*" org.eventb.core.assignment="rsrtbl ≔ ∅ ⦂ ℙ(BLOCKS×ROUTES)" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act3"/>
+        <org.eventb.core.scAction name="+" org.eventb.core.assignment="OCC ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act4"/>
+        <org.eventb.core.scAction name="," org.eventb.core.assignment="TRK ≔ ∅ ⦂ ℙ(BLOCKS×BLOCKS)" org.eventb.core.label="act5" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="-" org.eventb.core.assignment="frm ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act6" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="." org.eventb.core.assignment="LBT ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act7" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="/" org.eventb.core.assignment="GRN ≔ ∅ ⦂ ℙ(S)" org.eventb.core.label="act8" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element4"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx2_beeboon" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_element1">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_3.bcm|org.eventb.core.scMachineFile#train_3|org.eventb.core.scEvent#train_ctxL" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_element1|org.eventb.core.refinesEvent#internal_refinesEvent1"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="rsrtbl ≔ rsrtbl∪(rtbl ▷ {r})" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="u" org.eventb.core.assignment="resbl ≔ resbl∪rtbl∼[{r}]" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx2_beebooo" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_element2">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_3.bcm|org.eventb.core.scMachineFile#train_3|org.eventb.core.scEvent#train_ctxM" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_element2|org.eventb.core.refinesEvent#internal_refinesEvent1"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt ∖ {r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="frm ≔ frm ∖ {r}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx2_beeboop" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_1" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_element3">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_3.bcm|org.eventb.core.scMachineFile#train_3|org.eventb.core.scEvent#train_ctxN" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_element3|org.eventb.core.refinesEvent#internal_refinesEvent1"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈dom(SIG)" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="SIG(b)∈GRN" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC∪{b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="LBT ≔ LBT∪{b}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="GRN ≔ GRN ∖ {SIG(b)}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx2_beebooq" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_2" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_element4">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_3.bcm|org.eventb.core.scMachineFile#train_3|org.eventb.core.scEvent#train_ctxO" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_element4|org.eventb.core.refinesEvent#internal_refinesEvent1"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC∪{TRK(b)}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx2_beeboor" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_1" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_element5">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_3.bcm|org.eventb.core.scMachineFile#train_3|org.eventb.core.scEvent#train_ctxP" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_element5|org.eventb.core.refinesEvent#internal_refinesEvent1"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∉dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="f" org.eventb.core.assignment="LBT ≔ LBT ∖ {b}" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx2_beeboos" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_2" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_element6">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_3.bcm|org.eventb.core.scMachineFile#train_3|org.eventb.core.scEvent#train_ctxQ" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_element6|org.eventb.core.refinesEvent#internal_refinesEvent1"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="f" org.eventb.core.assignment="LBT ≔ (LBT ∖ {b})∪{TRK(b)}" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx2_beeboot" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="point_positionning" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_element7">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_3.bcm|org.eventb.core.scMachineFile#train_3|org.eventb.core.scEvent#train_ctxR" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_element7|org.eventb.core.refinesEvent#internal_refinesEvent1"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="TRK ≔ (dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx2_beeboou" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_formation" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_refinesMachine2">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_3.bcm|org.eventb.core.scMachineFile#train_3|org.eventb.core.scEvent#train_ctxS" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.refinesEvent#,"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.guard#(" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.guard#)" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="frm ≔ frm∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.action#*"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="GRN ≔ GRN∪{SIG(fst(r))}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.action#+"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.parameter#'" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+</org.eventb.core.scMachineFile>
diff --git a/Train_B_Book/train_4.bmso b/Train_B_Book/train_4.bmso
new file mode 100644
index 0000000000000000000000000000000000000000..59f28db99bf25512b27ab852379d2a90497a6bc9
--- /dev/null
+++ b/Train_B_Book/train_4.bmso
@@ -0,0 +1,9934 @@
+<visualization>
+  <children>
+    <de.bmotionstudio.gef.editor.model.BShape>
+      <children/>
+      <observers/>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeFillType</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+            <value class="int">0</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeDirection</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+            <value class="int">0</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeOrientation</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+            <value class="int">0</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeShape</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+            <value class="int">0</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeImage</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeImage/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_3</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB">
+              <red>192</red>
+              <green>192</green>
+              <blue>192</blue>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+            <value class="int">0</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">5</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+            <value class="org.eclipse.draw2d.geometry.Point">
+              <x>66</x>
+              <y>200</y>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">5</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeAlpha</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+            <value class="int">255</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">143</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">65</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+            <value class="org.eclipse.swt.graphics.RGB">
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections>
+        <connection>
+          <children/>
+          <observers>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+              <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                <setAttributeObjects>
+                  <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                    <type>#PREDICATE</type>
+                    <eval>this : resbl</eval>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>0</red>
+                      <green>0</green>
+                      <blue>255</blue>
+                    </value>
+                    <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                    <isExpressionMode>false</isExpressionMode>
+                  </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                  <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                    <type>#PREDICATE</type>
+                    <eval>this : OCC</eval>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>255</red>
+                      <green>0</green>
+                      <blue>0</blue>
+                    </value>
+                    <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                    <isExpressionMode>false</isExpressionMode>
+                  </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                  <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                    <type>#PREDICATE</type>
+                    <eval>this : OCC</eval>
+                    <value class="int">2</value>
+                    <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</attribute>
+                    <isExpressionMode>false</isExpressionMode>
+                  </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                  <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                    <type>#PREDICATE</type>
+                    <eval>this : OCC</eval>
+                    <value class="int">2</value>
+                    <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</attribute>
+                    <isExpressionMode>false</isExpressionMode>
+                  </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                </setAttributeObjects>
+              </de.bmotionstudio.gef.editor.observer.SetAttribute>
+            </entry>
+          </observers>
+          <events/>
+          <attributes>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                <value class="boolean">true</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeLabel</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                <value class="string">A</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                <value class="string">control_14</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                <value class="int">2</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                <value class="int">100</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnection</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection">
+                  <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection" reference=".."/>
+                </value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                <value class="int">100</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                <value class="int">100</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                <value class="string">A</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                <value class="int">100</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                <value class="org.eclipse.swt.graphics.RGB">
+                  <red>0</red>
+                  <green>0</green>
+                  <blue>0</blue>
+                </value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+            </entry>
+          </attributes>
+          <sourceConnections/>
+          <targetConnections/>
+          <isConnected>true</isConnected>
+          <source class="de.bmotionstudio.gef.editor.model.BShape" reference="../../.."/>
+          <target class="de.bmotionstudio.gef.editor.model.BShape">
+            <children/>
+            <observers/>
+            <events/>
+            <attributes>
+              <entry>
+                <string>de.bmotionstudio.gef.editor.attribute.BAttributeFillType</string>
+                <de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                  <value class="int">0</value>
+                </de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+              </entry>
+              <entry>
+                <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                  <value class="boolean">true</value>
+                </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+              </entry>
+              <entry>
+                <string>de.bmotionstudio.gef.editor.attribute.BAttributeDirection</string>
+                <de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                  <value class="int">0</value>
+                </de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+              </entry>
+              <entry>
+                <string>de.bmotionstudio.gef.editor.attribute.BAttributeOrientation</string>
+                <de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                  <value class="int">0</value>
+                </de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+              </entry>
+              <entry>
+                <string>de.bmotionstudio.gef.editor.attribute.BAttributeShape</string>
+                <de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                  <value class="int">0</value>
+                </de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+              </entry>
+              <entry>
+                <string>de.bmotionstudio.gef.editor.attribute.BAttributeImage</string>
+                <de.bmotionstudio.gef.editor.attribute.BAttributeImage/>
+              </entry>
+              <entry>
+                <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                  <value class="string">control_4</value>
+                </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+              </entry>
+              <entry>
+                <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                  <value class="org.eclipse.swt.graphics.RGB">
+                    <red>192</red>
+                    <green>192</green>
+                    <blue>192</blue>
+                  </value>
+                </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+              </entry>
+              <entry>
+                <string>de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha</string>
+                <de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                  <value class="int">0</value>
+                </de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+              </entry>
+              <entry>
+                <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                  <value class="int">5</value>
+                </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+              </entry>
+              <entry>
+                <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                  <value class="string"></value>
+                </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+              </entry>
+              <entry>
+                <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                  <value class="org.eclipse.draw2d.geometry.Point">
+                    <x>203</x>
+                    <y>200</y>
+                  </value>
+                </de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+              </entry>
+              <entry>
+                <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                  <value class="int">5</value>
+                </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+              </entry>
+              <entry>
+                <string>de.bmotionstudio.gef.editor.attribute.BAttributeAlpha</string>
+                <de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                  <value class="int">255</value>
+                </de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+              </entry>
+              <entry>
+                <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                  <value class="string"></value>
+                </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+              </entry>
+              <entry>
+                <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                  <value class="int">143</value>
+                </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+              </entry>
+              <entry>
+                <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                  <value class="int">202</value>
+                </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+              </entry>
+              <entry>
+                <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                  <value class="org.eclipse.swt.graphics.RGB">
+                    <red>0</red>
+                    <green>0</green>
+                    <blue>0</blue>
+                  </value>
+                </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+              </entry>
+              <entry>
+                <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+              </entry>
+            </attributes>
+            <sourceConnections>
+              <connection>
+                <children/>
+                <observers>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+                    <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                      <setAttributeObjects>
+                        <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                          <type>#PREDICATE</type>
+                          <eval>this : OCC &amp; ((B|-&gt;C) : TRK or (C|-&gt;B) : TRK)</eval>
+                          <value class="int">2</value>
+                          <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</attribute>
+                          <isExpressionMode>false</isExpressionMode>
+                        </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                        <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                          <type>#PREDICATE</type>
+                          <eval>this : resbl</eval>
+                          <value class="org.eclipse.swt.graphics.RGB">
+                            <red>0</red>
+                            <green>0</green>
+                            <blue>255</blue>
+                          </value>
+                          <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                          <isExpressionMode>false</isExpressionMode>
+                        </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                        <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                          <type>#PREDICATE</type>
+                          <eval>this : OCC &amp; ((B|-&gt;C) : TRK or (C|-&gt;B) : TRK)</eval>
+                          <value class="org.eclipse.swt.graphics.RGB">
+                            <red>255</red>
+                            <green>0</green>
+                            <blue>0</blue>
+                          </value>
+                          <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                          <isExpressionMode>false</isExpressionMode>
+                        </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                        <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                          <type>#PREDICATE</type>
+                          <eval>this : resbl &amp; ((B|-&gt;D) : TRK or (D|-&gt;B) : TRK)</eval>
+                          <value class="org.eclipse.swt.graphics.RGB">
+                            <red>0</red>
+                            <green>0</green>
+                            <blue>0</blue>
+                          </value>
+                          <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                          <isExpressionMode>false</isExpressionMode>
+                        </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                        <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                          <type>#PREDICATE</type>
+                          <eval>this : OCC &amp; ((B|-&gt;C) : TRK or (C|-&gt;B) : TRK)</eval>
+                          <value class="int">2</value>
+                          <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</attribute>
+                          <isExpressionMode>false</isExpressionMode>
+                        </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                      </setAttributeObjects>
+                    </de.bmotionstudio.gef.editor.observer.SetAttribute>
+                  </entry>
+                </observers>
+                <events/>
+                <attributes>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                      <value class="boolean">true</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeLabel</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                      <value class="string">B</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                      <value class="int">0</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                      <value class="string">control_17</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                      <value class="int">2</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                      <value class="int">100</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnection</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                      <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection">
+                        <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection" reference=".."/>
+                      </value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                      <value class="string"></value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                      <value class="int">0</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                      <value class="int">100</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                      <value class="int">100</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                      <value class="string">B</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                      <value class="int">100</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                      <value class="org.eclipse.swt.graphics.RGB">
+                        <red>0</red>
+                        <green>0</green>
+                        <blue>0</blue>
+                      </value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                      <value class="int">0</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                  </entry>
+                </attributes>
+                <sourceConnections/>
+                <targetConnections/>
+                <isConnected>true</isConnected>
+                <source class="de.bmotionstudio.gef.editor.model.BShape" reference="../../.."/>
+                <target class="de.bmotionstudio.gef.editor.model.BShape">
+                  <children/>
+                  <observers/>
+                  <events/>
+                  <attributes>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeFillType</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                        <value class="int">0</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                        <value class="boolean">true</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeDirection</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                        <value class="int">0</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeOrientation</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                        <value class="int">0</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeShape</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                        <value class="int">0</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeImage</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeImage/>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                        <value class="string">control_9</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                        <value class="org.eclipse.swt.graphics.RGB">
+                          <red>192</red>
+                          <green>192</green>
+                          <blue>192</blue>
+                        </value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                        <value class="int">0</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                        <value class="int">5</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                        <value class="string"></value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                        <value class="org.eclipse.draw2d.geometry.Point">
+                          <x>391</x>
+                          <y>200</y>
+                        </value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                        <value class="int">5</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeAlpha</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                        <value class="int">255</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                        <value class="string"></value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                        <value class="int">71</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                        <value class="int">390</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                        <value class="org.eclipse.swt.graphics.RGB">
+                          <red>0</red>
+                          <green>0</green>
+                          <blue>0</blue>
+                        </value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                    </entry>
+                  </attributes>
+                  <sourceConnections>
+                    <connection>
+                      <children/>
+                      <observers>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+                          <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                            <setAttributeObjects>
+                              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                <type>#PREDICATE</type>
+                                <eval>this : OCC</eval>
+                                <value class="int">2</value>
+                                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</attribute>
+                                <isExpressionMode>false</isExpressionMode>
+                              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                <type>#PREDICATE</type>
+                                <eval>this : resbl</eval>
+                                <value class="org.eclipse.swt.graphics.RGB">
+                                  <red>0</red>
+                                  <green>0</green>
+                                  <blue>255</blue>
+                                </value>
+                                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                <isExpressionMode>false</isExpressionMode>
+                              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                <type>#PREDICATE</type>
+                                <eval>this : OCC</eval>
+                                <value class="org.eclipse.swt.graphics.RGB">
+                                  <red>255</red>
+                                  <green>0</green>
+                                  <blue>0</blue>
+                                </value>
+                                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                <isExpressionMode>false</isExpressionMode>
+                              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                <type>#PREDICATE</type>
+                                <eval>this : OCC</eval>
+                                <value class="int">2</value>
+                                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</attribute>
+                                <isExpressionMode>false</isExpressionMode>
+                              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                            </setAttributeObjects>
+                          </de.bmotionstudio.gef.editor.observer.SetAttribute>
+                        </entry>
+                      </observers>
+                      <events/>
+                      <attributes>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                            <value class="boolean">true</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeLabel</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                            <value class="string">C</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                            <value class="int">0</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                            <value class="string">control_24</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                            <value class="int">2</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                            <value class="int">100</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnection</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                            <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection">
+                              <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection" reference=".."/>
+                            </value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                            <value class="string"></value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                            <value class="int">0</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                            <value class="int">100</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                            <value class="int">100</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                            <value class="string">C</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                            <value class="int">100</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                            <value class="org.eclipse.swt.graphics.RGB">
+                              <red>0</red>
+                              <green>0</green>
+                              <blue>0</blue>
+                            </value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                            <value class="int">0</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                        </entry>
+                      </attributes>
+                      <sourceConnections/>
+                      <targetConnections/>
+                      <isConnected>true</isConnected>
+                      <source class="de.bmotionstudio.gef.editor.model.BShape" reference="../../.."/>
+                      <target class="de.bmotionstudio.gef.editor.model.BShape">
+                        <children/>
+                        <observers/>
+                        <events/>
+                        <attributes>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeFillType</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                              <value class="int">0</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                              <value class="boolean">true</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeDirection</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                              <value class="int">0</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeOrientation</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                              <value class="int">0</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeShape</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                              <value class="int">0</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeImage</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeImage/>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                              <value class="string">control_12</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                              <value class="org.eclipse.swt.graphics.RGB">
+                                <red>192</red>
+                                <green>192</green>
+                                <blue>192</blue>
+                              </value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                              <value class="int">0</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                              <value class="int">5</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                              <value class="string"></value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                              <value class="org.eclipse.draw2d.geometry.Point">
+                                <x>790</x>
+                                <y>71</y>
+                              </value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                              <value class="int">5</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeAlpha</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                              <value class="int">255</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                              <value class="string"></value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                              <value class="int">71</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                              <value class="int">790</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                              <value class="org.eclipse.swt.graphics.RGB">
+                                <red>0</red>
+                                <green>0</green>
+                                <blue>0</blue>
+                              </value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                          </entry>
+                        </attributes>
+                        <sourceConnections/>
+                        <targetConnections>
+                          <connection reference="../../.."/>
+                        </targetConnections>
+                      </target>
+                    </connection>
+                  </sourceConnections>
+                  <targetConnections>
+                    <connection reference="../../.."/>
+                  </targetConnections>
+                </target>
+              </connection>
+              <connection>
+                <children/>
+                <observers>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+                    <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                      <setAttributeObjects>
+                        <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                          <type>#PREDICATE</type>
+                          <eval>this : OCC &amp; ((B|-&gt;D) : TRK or (D|-&gt;B) : TRK)</eval>
+                          <value class="int">2</value>
+                          <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</attribute>
+                          <isExpressionMode>false</isExpressionMode>
+                        </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                        <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                          <type>#PREDICATE</type>
+                          <eval>this : resbl</eval>
+                          <value class="org.eclipse.swt.graphics.RGB">
+                            <red>0</red>
+                            <green>0</green>
+                            <blue>255</blue>
+                          </value>
+                          <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                          <isExpressionMode>false</isExpressionMode>
+                        </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                        <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                          <type>#PREDICATE</type>
+                          <eval>this : OCC &amp; ((B|-&gt;D) : TRK or (D|-&gt;B) : TRK)</eval>
+                          <value class="org.eclipse.swt.graphics.RGB">
+                            <red>255</red>
+                            <green>0</green>
+                            <blue>0</blue>
+                          </value>
+                          <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                          <isExpressionMode>false</isExpressionMode>
+                        </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                        <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                          <type>#PREDICATE</type>
+                          <eval>this : resbl &amp; ((B|-&gt;C) : TRK or (C|-&gt;B) : TRK)</eval>
+                          <value class="org.eclipse.swt.graphics.RGB">
+                            <red>0</red>
+                            <green>0</green>
+                            <blue>0</blue>
+                          </value>
+                          <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                          <isExpressionMode>false</isExpressionMode>
+                        </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                        <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                          <type>#PREDICATE</type>
+                          <eval>this : OCC &amp; ((B|-&gt;D) : TRK or (D|-&gt;B) : TRK)</eval>
+                          <value class="int">2</value>
+                          <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</attribute>
+                          <isExpressionMode>false</isExpressionMode>
+                        </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                      </setAttributeObjects>
+                    </de.bmotionstudio.gef.editor.observer.SetAttribute>
+                  </entry>
+                </observers>
+                <events/>
+                <attributes>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                      <value class="boolean">true</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeLabel</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                      <value class="string">B</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                      <value class="int">0</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                      <value class="string">control_18</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                      <value class="int">2</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                      <value class="int">100</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnection</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                      <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection">
+                        <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection" reference=".."/>
+                      </value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                      <value class="string"></value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                      <value class="int">0</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                      <value class="int">100</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                      <value class="int">100</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                      <value class="string">B</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                      <value class="int">100</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                      <value class="org.eclipse.swt.graphics.RGB">
+                        <red>0</red>
+                        <green>0</green>
+                        <blue>0</blue>
+                      </value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                  </entry>
+                  <entry>
+                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration</string>
+                    <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                      <value class="int">0</value>
+                    </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                  </entry>
+                </attributes>
+                <sourceConnections/>
+                <targetConnections/>
+                <isConnected>true</isConnected>
+                <source class="de.bmotionstudio.gef.editor.model.BShape" reference="../../.."/>
+                <target class="de.bmotionstudio.gef.editor.model.BShape">
+                  <children/>
+                  <observers/>
+                  <events/>
+                  <attributes>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeFillType</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                        <value class="int">0</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                        <value class="boolean">true</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeDirection</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                        <value class="int">0</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeOrientation</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                        <value class="int">0</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeShape</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                        <value class="int">0</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeImage</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeImage/>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                        <value class="string">control_10</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                        <value class="org.eclipse.swt.graphics.RGB">
+                          <red>192</red>
+                          <green>192</green>
+                          <blue>192</blue>
+                        </value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                        <value class="int">0</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                        <value class="int">5</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                        <value class="string"></value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                        <value class="org.eclipse.draw2d.geometry.Point">
+                          <x>391</x>
+                          <y>200</y>
+                        </value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                        <value class="int">5</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeAlpha</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                        <value class="int">255</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                        <value class="string"></value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                        <value class="int">143</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                        <value class="int">390</value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                        <value class="org.eclipse.swt.graphics.RGB">
+                          <red>0</red>
+                          <green>0</green>
+                          <blue>0</blue>
+                        </value>
+                      </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                    </entry>
+                    <entry>
+                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                      <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                    </entry>
+                  </attributes>
+                  <sourceConnections>
+                    <connection>
+                      <children/>
+                      <observers>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+                          <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                            <setAttributeObjects>
+                              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                <type>#PREDICATE</type>
+                                <eval>this : OCC</eval>
+                                <value class="int">2</value>
+                                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</attribute>
+                                <isExpressionMode>false</isExpressionMode>
+                              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                <type>#PREDICATE</type>
+                                <eval>this : resbl</eval>
+                                <value class="org.eclipse.swt.graphics.RGB">
+                                  <red>0</red>
+                                  <green>0</green>
+                                  <blue>255</blue>
+                                </value>
+                                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                <isExpressionMode>false</isExpressionMode>
+                              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                <type>#PREDICATE</type>
+                                <eval>this : OCC</eval>
+                                <value class="org.eclipse.swt.graphics.RGB">
+                                  <red>255</red>
+                                  <green>0</green>
+                                  <blue>0</blue>
+                                </value>
+                                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                <isExpressionMode>false</isExpressionMode>
+                              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                <type>#PREDICATE</type>
+                                <eval>this : OCC</eval>
+                                <value class="int">2</value>
+                                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</attribute>
+                                <isExpressionMode>false</isExpressionMode>
+                              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                            </setAttributeObjects>
+                          </de.bmotionstudio.gef.editor.observer.SetAttribute>
+                        </entry>
+                      </observers>
+                      <events/>
+                      <attributes>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                            <value class="boolean">true</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeLabel</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                            <value class="string">D</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                            <value class="int">0</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                            <value class="string">control_23</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                            <value class="int">2</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                            <value class="int">100</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnection</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                            <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection">
+                              <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection" reference=".."/>
+                            </value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                            <value class="string"></value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                            <value class="int">0</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                            <value class="int">100</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                            <value class="int">100</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                            <value class="string">D</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                            <value class="int">100</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                            <value class="org.eclipse.swt.graphics.RGB">
+                              <red>0</red>
+                              <green>0</green>
+                              <blue>0</blue>
+                            </value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                        </entry>
+                        <entry>
+                          <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration</string>
+                          <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                            <value class="int">0</value>
+                          </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                        </entry>
+                      </attributes>
+                      <sourceConnections/>
+                      <targetConnections/>
+                      <isConnected>true</isConnected>
+                      <source class="de.bmotionstudio.gef.editor.model.BShape" reference="../../.."/>
+                      <target class="de.bmotionstudio.gef.editor.model.BShape">
+                        <children/>
+                        <observers/>
+                        <events/>
+                        <attributes>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeFillType</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                              <value class="int">0</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                              <value class="boolean">true</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeDirection</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                              <value class="int">0</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeOrientation</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                              <value class="int">0</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeShape</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                              <value class="int">0</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeImage</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeImage/>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                              <value class="string">control_11</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                              <value class="org.eclipse.swt.graphics.RGB">
+                                <red>192</red>
+                                <green>192</green>
+                                <blue>192</blue>
+                              </value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                              <value class="int">0</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                              <value class="int">5</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                              <value class="string"></value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                              <value class="org.eclipse.draw2d.geometry.Point">
+                                <x>461</x>
+                                <y>200</y>
+                              </value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                              <value class="int">5</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeAlpha</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                              <value class="int">255</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                              <value class="string"></value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                              <value class="int">143</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                              <value class="int">460</value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                              <value class="org.eclipse.swt.graphics.RGB">
+                                <red>0</red>
+                                <green>0</green>
+                                <blue>0</blue>
+                              </value>
+                            </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                          </entry>
+                          <entry>
+                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                            <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                          </entry>
+                        </attributes>
+                        <sourceConnections>
+                          <connection>
+                            <children/>
+                            <observers>
+                              <entry>
+                                <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+                                <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                                  <setAttributeObjects>
+                                    <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                      <type>#PREDICATE</type>
+                                      <eval>this : OCC &amp; ((E|-&gt;D) : TRK or (D|-&gt;E) : TRK)</eval>
+                                      <value class="int">2</value>
+                                      <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</attribute>
+                                      <isExpressionMode>false</isExpressionMode>
+                                    </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                    <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                      <type>#PREDICATE</type>
+                                      <eval>this : resbl</eval>
+                                      <value class="org.eclipse.swt.graphics.RGB">
+                                        <red>0</red>
+                                        <green>0</green>
+                                        <blue>255</blue>
+                                      </value>
+                                      <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                      <isExpressionMode>false</isExpressionMode>
+                                    </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                    <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                      <type>#PREDICATE</type>
+                                      <eval>this : OCC &amp; ((E|-&gt;D) : TRK or (D|-&gt;E) : TRK)</eval>
+                                      <value class="org.eclipse.swt.graphics.RGB">
+                                        <red>255</red>
+                                        <green>0</green>
+                                        <blue>0</blue>
+                                      </value>
+                                      <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                      <isExpressionMode>false</isExpressionMode>
+                                    </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                    <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                      <type>#PREDICATE</type>
+                                      <eval>this : resbl &amp; ((E|-&gt;G) : TRK or (G|-&gt;E) : TRK)</eval>
+                                      <value class="org.eclipse.swt.graphics.RGB">
+                                        <red>0</red>
+                                        <green>0</green>
+                                        <blue>0</blue>
+                                      </value>
+                                      <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                      <isExpressionMode>false</isExpressionMode>
+                                    </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                    <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                      <type>#PREDICATE</type>
+                                      <eval>this : OCC &amp; ((E|-&gt;D) : TRK or (D|-&gt;E) : TRK)</eval>
+                                      <value class="int">2</value>
+                                      <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</attribute>
+                                      <isExpressionMode>false</isExpressionMode>
+                                    </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                  </setAttributeObjects>
+                                </de.bmotionstudio.gef.editor.observer.SetAttribute>
+                              </entry>
+                            </observers>
+                            <events/>
+                            <attributes>
+                              <entry>
+                                <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                                <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                  <value class="boolean">true</value>
+                                </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                              </entry>
+                              <entry>
+                                <string>de.bmotionstudio.gef.editor.attribute.BAttributeLabel</string>
+                                <de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                                  <value class="string">E</value>
+                                </de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                              </entry>
+                              <entry>
+                                <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</string>
+                                <de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                                  <value class="int">0</value>
+                                </de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                              </entry>
+                              <entry>
+                                <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                                <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                  <value class="string">control_26</value>
+                                </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                              </entry>
+                              <entry>
+                                <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</string>
+                                <de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                                  <value class="int">2</value>
+                                </de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                              </entry>
+                              <entry>
+                                <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                                <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                  <value class="int">100</value>
+                                </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                              </entry>
+                              <entry>
+                                <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnection</string>
+                                <de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                                  <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection">
+                                    <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection" reference=".."/>
+                                  </value>
+                                </de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                              </entry>
+                              <entry>
+                                <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                                <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                  <value class="string"></value>
+                                </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                              </entry>
+                              <entry>
+                                <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                                <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+                              </entry>
+                              <entry>
+                                <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration</string>
+                                <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                                  <value class="int">0</value>
+                                </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                              </entry>
+                              <entry>
+                                <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                                <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                  <value class="int">100</value>
+                                </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                              </entry>
+                              <entry>
+                                <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                                <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                  <value class="int">100</value>
+                                </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                              </entry>
+                              <entry>
+                                <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                                <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                  <value class="string">E</value>
+                                </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                              </entry>
+                              <entry>
+                                <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                                <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                  <value class="int">100</value>
+                                </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                              </entry>
+                              <entry>
+                                <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                                <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                  <value class="org.eclipse.swt.graphics.RGB">
+                                    <red>0</red>
+                                    <green>0</green>
+                                    <blue>0</blue>
+                                  </value>
+                                </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                              </entry>
+                              <entry>
+                                <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                                <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                              </entry>
+                              <entry>
+                                <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration</string>
+                                <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                                  <value class="int">0</value>
+                                </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                              </entry>
+                            </attributes>
+                            <sourceConnections/>
+                            <targetConnections/>
+                            <isConnected>true</isConnected>
+                            <source class="de.bmotionstudio.gef.editor.model.BShape" reference="../../.."/>
+                            <target class="de.bmotionstudio.gef.editor.model.BShape">
+                              <children/>
+                              <observers/>
+                              <events/>
+                              <attributes>
+                                <entry>
+                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeFillType</string>
+                                  <de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                                    <value class="int">0</value>
+                                  </de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                                </entry>
+                                <entry>
+                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                                  <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                    <value class="boolean">true</value>
+                                  </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                </entry>
+                                <entry>
+                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeDirection</string>
+                                  <de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                                    <value class="int">0</value>
+                                  </de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                                </entry>
+                                <entry>
+                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeOrientation</string>
+                                  <de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                                    <value class="int">0</value>
+                                  </de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                                </entry>
+                                <entry>
+                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeShape</string>
+                                  <de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                                    <value class="int">0</value>
+                                  </de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                                </entry>
+                                <entry>
+                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeImage</string>
+                                  <de.bmotionstudio.gef.editor.attribute.BAttributeImage/>
+                                </entry>
+                                <entry>
+                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                                  <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                    <value class="string">control_25</value>
+                                  </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                </entry>
+                                <entry>
+                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                                  <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                                    <value class="org.eclipse.swt.graphics.RGB">
+                                      <red>192</red>
+                                      <green>192</green>
+                                      <blue>192</blue>
+                                    </value>
+                                  </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                                </entry>
+                                <entry>
+                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha</string>
+                                  <de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                                    <value class="int">0</value>
+                                  </de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                                </entry>
+                                <entry>
+                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                                  <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                    <value class="int">5</value>
+                                  </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                </entry>
+                                <entry>
+                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                                  <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                    <value class="string"></value>
+                                  </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                </entry>
+                                <entry>
+                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                                  <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                                    <value class="org.eclipse.draw2d.geometry.Point">
+                                      <x>588</x>
+                                      <y>200</y>
+                                    </value>
+                                  </de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                                </entry>
+                                <entry>
+                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                                  <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                    <value class="int">5</value>
+                                  </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                </entry>
+                                <entry>
+                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeAlpha</string>
+                                  <de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                                    <value class="int">255</value>
+                                  </de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                                </entry>
+                                <entry>
+                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                                  <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                    <value class="string"></value>
+                                  </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                </entry>
+                                <entry>
+                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                                  <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                    <value class="int">143</value>
+                                  </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                </entry>
+                                <entry>
+                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                                  <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                    <value class="int">587</value>
+                                  </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                </entry>
+                                <entry>
+                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                                  <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                    <value class="org.eclipse.swt.graphics.RGB">
+                                      <red>0</red>
+                                      <green>0</green>
+                                      <blue>0</blue>
+                                    </value>
+                                  </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                </entry>
+                                <entry>
+                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                                  <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                                </entry>
+                              </attributes>
+                              <sourceConnections>
+                                <connection>
+                                  <children/>
+                                  <observers>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+                                      <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                                        <setAttributeObjects>
+                                          <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                            <type>#PREDICATE</type>
+                                            <eval>this : OCC &amp; ((E|-&gt;G) : TRK or (G|-&gt;E) : TRK)</eval>
+                                            <value class="int">2</value>
+                                            <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</attribute>
+                                            <isExpressionMode>false</isExpressionMode>
+                                          </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                          <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                            <type>#PREDICATE</type>
+                                            <eval>this : resbl</eval>
+                                            <value class="org.eclipse.swt.graphics.RGB">
+                                              <red>0</red>
+                                              <green>0</green>
+                                              <blue>255</blue>
+                                            </value>
+                                            <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                            <isExpressionMode>false</isExpressionMode>
+                                          </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                          <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                            <type>#PREDICATE</type>
+                                            <eval>this : OCC &amp; ((E|-&gt;G) : TRK or (G|-&gt;E) : TRK)</eval>
+                                            <value class="org.eclipse.swt.graphics.RGB">
+                                              <red>255</red>
+                                              <green>0</green>
+                                              <blue>0</blue>
+                                            </value>
+                                            <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                            <isExpressionMode>false</isExpressionMode>
+                                          </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                          <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                            <type>#PREDICATE</type>
+                                            <eval>this : resbl &amp;  ((E|-&gt;D) : TRK or (D|-&gt;E) : TRK)</eval>
+                                            <value class="org.eclipse.swt.graphics.RGB">
+                                              <red>0</red>
+                                              <green>0</green>
+                                              <blue>0</blue>
+                                            </value>
+                                            <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                            <isExpressionMode>false</isExpressionMode>
+                                          </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                          <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                            <type>#PREDICATE</type>
+                                            <eval>this : OCC &amp; ((E|-&gt;G) : TRK or (G|-&gt;E) : TRK)</eval>
+                                            <value class="int">2</value>
+                                            <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</attribute>
+                                            <isExpressionMode>false</isExpressionMode>
+                                          </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                        </setAttributeObjects>
+                                      </de.bmotionstudio.gef.editor.observer.SetAttribute>
+                                    </entry>
+                                  </observers>
+                                  <events/>
+                                  <attributes>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                        <value class="boolean">true</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeLabel</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                                        <value class="string">E</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                                        <value class="int">0</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                        <value class="string">control_27</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                                        <value class="int">2</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                        <value class="int">100</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnection</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                                        <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection">
+                                          <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection" reference=".."/>
+                                        </value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                        <value class="string"></value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                                        <value class="int">0</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                        <value class="int">100</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                        <value class="int">100</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                        <value class="string">E</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                        <value class="int">100</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                        <value class="org.eclipse.swt.graphics.RGB">
+                                          <red>0</red>
+                                          <green>0</green>
+                                          <blue>0</blue>
+                                        </value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                                        <value class="int">0</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                                    </entry>
+                                  </attributes>
+                                  <sourceConnections/>
+                                  <targetConnections/>
+                                  <isConnected>true</isConnected>
+                                  <source class="de.bmotionstudio.gef.editor.model.BShape" reference="../../.."/>
+                                  <target class="de.bmotionstudio.gef.editor.model.BShape">
+                                    <children/>
+                                    <observers/>
+                                    <events/>
+                                    <attributes>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeFillType</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                                          <value class="int">0</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                          <value class="boolean">true</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeDirection</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                                          <value class="int">0</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeOrientation</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                                          <value class="int">0</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeShape</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                                          <value class="int">0</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeImage</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeImage/>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                          <value class="string">control_13</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                                          <value class="org.eclipse.swt.graphics.RGB">
+                                            <red>192</red>
+                                            <green>192</green>
+                                            <blue>192</blue>
+                                          </value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                                          <value class="int">0</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                          <value class="int">5</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                          <value class="string"></value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                                          <value class="org.eclipse.draw2d.geometry.Point">
+                                            <x>391</x>
+                                            <y>200</y>
+                                          </value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                          <value class="int">5</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeAlpha</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                                          <value class="int">255</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                          <value class="string"></value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                          <value class="int">228</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                          <value class="int">390</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                          <value class="org.eclipse.swt.graphics.RGB">
+                                            <red>0</red>
+                                            <green>0</green>
+                                            <blue>0</blue>
+                                          </value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                                      </entry>
+                                    </attributes>
+                                    <sourceConnections>
+                                      <connection>
+                                        <children/>
+                                        <observers>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+                                            <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                                              <setAttributeObjects>
+                                                <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                  <type>#PREDICATE</type>
+                                                  <eval>this : OCC &amp; ((G|-&gt;I) : TRK or (I|-&gt;G) : TRK)</eval>
+                                                  <value class="int">2</value>
+                                                  <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</attribute>
+                                                  <isExpressionMode>false</isExpressionMode>
+                                                </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                  <type>#PREDICATE</type>
+                                                  <eval>this : resbl</eval>
+                                                  <value class="org.eclipse.swt.graphics.RGB">
+                                                    <red>0</red>
+                                                    <green>0</green>
+                                                    <blue>255</blue>
+                                                  </value>
+                                                  <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                                  <isExpressionMode>false</isExpressionMode>
+                                                </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                  <type>#PREDICATE</type>
+                                                  <eval>this : OCC &amp; ((G|-&gt;I) : TRK or (I|-&gt;G) : TRK)</eval>
+                                                  <value class="org.eclipse.swt.graphics.RGB">
+                                                    <red>255</red>
+                                                    <green>0</green>
+                                                    <blue>0</blue>
+                                                  </value>
+                                                  <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                                  <isExpressionMode>false</isExpressionMode>
+                                                </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                  <type>#PREDICATE</type>
+                                                  <eval>this : resbl &amp; ((G|-&gt;H) : TRK or (H|-&gt;G) : TRK)</eval>
+                                                  <value class="org.eclipse.swt.graphics.RGB">
+                                                    <red>0</red>
+                                                    <green>0</green>
+                                                    <blue>0</blue>
+                                                  </value>
+                                                  <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                                  <isExpressionMode>false</isExpressionMode>
+                                                </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                  <type>#PREDICATE</type>
+                                                  <eval>this : OCC &amp; ((G|-&gt;I) : TRK or (I|-&gt;G) : TRK)</eval>
+                                                  <value class="int">2</value>
+                                                  <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</attribute>
+                                                  <isExpressionMode>false</isExpressionMode>
+                                                </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                              </setAttributeObjects>
+                                            </de.bmotionstudio.gef.editor.observer.SetAttribute>
+                                          </entry>
+                                        </observers>
+                                        <events/>
+                                        <attributes>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                              <value class="boolean">true</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeLabel</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                                              <value class="string">G</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                                              <value class="int">0</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                              <value class="string">control_20</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                                              <value class="int">2</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                              <value class="int">100</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnection</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                                              <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection">
+                                                <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection" reference=".."/>
+                                              </value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                              <value class="string"></value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                                              <value class="int">0</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                              <value class="int">100</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                              <value class="int">100</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                              <value class="string">G</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                              <value class="int">100</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                              <value class="org.eclipse.swt.graphics.RGB">
+                                                <red>0</red>
+                                                <green>0</green>
+                                                <blue>0</blue>
+                                              </value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                                              <value class="int">0</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                                          </entry>
+                                        </attributes>
+                                        <sourceConnections/>
+                                        <targetConnections/>
+                                        <isConnected>true</isConnected>
+                                        <source class="de.bmotionstudio.gef.editor.model.BShape" reference="../../.."/>
+                                        <target class="de.bmotionstudio.gef.editor.model.BShape">
+                                          <children/>
+                                          <observers/>
+                                          <events/>
+                                          <attributes>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeFillType</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                                                <value class="int">0</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                                <value class="boolean">true</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeDirection</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                                                <value class="int">0</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeOrientation</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                                                <value class="int">0</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeShape</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                                                <value class="int">0</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeImage</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeImage/>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                                <value class="string">control_8</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                                                <value class="org.eclipse.swt.graphics.RGB">
+                                                  <red>192</red>
+                                                  <green>192</green>
+                                                  <blue>192</blue>
+                                                </value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                                                <value class="int">0</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                                <value class="int">5</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                                <value class="string"></value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                                                <value class="org.eclipse.draw2d.geometry.Point">
+                                                  <x>202</x>
+                                                  <y>315</y>
+                                                </value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                                <value class="int">5</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeAlpha</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                                                <value class="int">255</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                                <value class="string"></value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                                <value class="int">315</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                                <value class="int">202</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                                <value class="org.eclipse.swt.graphics.RGB">
+                                                  <red>0</red>
+                                                  <green>0</green>
+                                                  <blue>0</blue>
+                                                </value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                                            </entry>
+                                          </attributes>
+                                          <sourceConnections/>
+                                          <targetConnections>
+                                            <connection>
+                                              <children/>
+                                              <observers>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+                                                  <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                                                    <setAttributeObjects>
+                                                      <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                        <type>#PREDICATE</type>
+                                                        <eval>this : OCC</eval>
+                                                        <value class="int">2</value>
+                                                        <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</attribute>
+                                                        <isExpressionMode>false</isExpressionMode>
+                                                      </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                      <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                        <type>#PREDICATE</type>
+                                                        <eval>this : resbl</eval>
+                                                        <value class="org.eclipse.swt.graphics.RGB">
+                                                          <red>0</red>
+                                                          <green>0</green>
+                                                          <blue>255</blue>
+                                                        </value>
+                                                        <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                                        <isExpressionMode>false</isExpressionMode>
+                                                      </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                      <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                        <type>#PREDICATE</type>
+                                                        <eval>this : OCC</eval>
+                                                        <value class="org.eclipse.swt.graphics.RGB">
+                                                          <red>255</red>
+                                                          <green>0</green>
+                                                          <blue>0</blue>
+                                                        </value>
+                                                        <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                                        <isExpressionMode>false</isExpressionMode>
+                                                      </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                      <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                        <type>#PREDICATE</type>
+                                                        <eval>this : OCC</eval>
+                                                        <value class="int">2</value>
+                                                        <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</attribute>
+                                                        <isExpressionMode>false</isExpressionMode>
+                                                      </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                    </setAttributeObjects>
+                                                  </de.bmotionstudio.gef.editor.observer.SetAttribute>
+                                                </entry>
+                                              </observers>
+                                              <events/>
+                                              <attributes>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                                    <value class="boolean">true</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeLabel</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                                                    <value class="string">I</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                                                    <value class="int">0</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                                    <value class="string">control_16</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                                                    <value class="int">2</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                                    <value class="int">100</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnection</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                                                    <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection">
+                                                      <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection" reference=".."/>
+                                                    </value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                                    <value class="string"></value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                                                    <value class="int">0</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                                    <value class="int">100</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                                    <value class="int">100</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                                    <value class="string">I</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                                    <value class="int">100</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                                    <value class="org.eclipse.swt.graphics.RGB">
+                                                      <red>0</red>
+                                                      <green>0</green>
+                                                      <blue>0</blue>
+                                                    </value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                                                    <value class="int">0</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                                                </entry>
+                                              </attributes>
+                                              <sourceConnections/>
+                                              <targetConnections/>
+                                              <isConnected>true</isConnected>
+                                              <source class="de.bmotionstudio.gef.editor.model.BShape">
+                                                <children/>
+                                                <observers/>
+                                                <events/>
+                                                <attributes>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeFillType</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                                                      <value class="int">0</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                                      <value class="boolean">true</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeDirection</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                                                      <value class="int">0</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeOrientation</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                                                      <value class="int">0</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeShape</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                                                      <value class="int">0</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeImage</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeImage/>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                                      <value class="string">control_7</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                                                      <value class="org.eclipse.swt.graphics.RGB">
+                                                        <red>192</red>
+                                                        <green>192</green>
+                                                        <blue>192</blue>
+                                                      </value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                                                      <value class="int">0</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                                      <value class="int">5</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                                      <value class="string"></value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                                                      <value class="org.eclipse.draw2d.geometry.Point">
+                                                        <x>65</x>
+                                                        <y>315</y>
+                                                      </value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                                      <value class="int">5</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeAlpha</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                                                      <value class="int">255</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                                      <value class="string"></value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                                      <value class="int">315</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                                      <value class="int">65</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                                      <value class="org.eclipse.swt.graphics.RGB">
+                                                        <red>0</red>
+                                                        <green>0</green>
+                                                        <blue>0</blue>
+                                                      </value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                                                  </entry>
+                                                </attributes>
+                                                <sourceConnections>
+                                                  <connection reference="../../.."/>
+                                                </sourceConnections>
+                                                <targetConnections/>
+                                              </source>
+                                              <target class="de.bmotionstudio.gef.editor.model.BShape" reference="../../.."/>
+                                            </connection>
+                                            <connection reference="../../.."/>
+                                          </targetConnections>
+                                        </target>
+                                      </connection>
+                                    </sourceConnections>
+                                    <targetConnections>
+                                      <connection>
+                                        <children/>
+                                        <observers>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+                                            <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                                              <setAttributeObjects>
+                                                <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                  <type>#PREDICATE</type>
+                                                  <eval>this : OCC &amp; ((G|-&gt;H) : TRK or (H|-&gt;G) : TRK)</eval>
+                                                  <value class="int">2</value>
+                                                  <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</attribute>
+                                                  <isExpressionMode>false</isExpressionMode>
+                                                </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                  <type>#PREDICATE</type>
+                                                  <eval>this : resbl</eval>
+                                                  <value class="org.eclipse.swt.graphics.RGB">
+                                                    <red>0</red>
+                                                    <green>0</green>
+                                                    <blue>255</blue>
+                                                  </value>
+                                                  <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                                  <isExpressionMode>false</isExpressionMode>
+                                                </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                  <type>#PREDICATE</type>
+                                                  <eval>this : OCC &amp; ((G|-&gt;H) : TRK or (H|-&gt;G) : TRK)</eval>
+                                                  <value class="org.eclipse.swt.graphics.RGB">
+                                                    <red>255</red>
+                                                    <green>0</green>
+                                                    <blue>0</blue>
+                                                  </value>
+                                                  <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                                  <isExpressionMode>false</isExpressionMode>
+                                                </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                  <type>#PREDICATE</type>
+                                                  <eval>this : resbl &amp; ((G|-&gt;I) : TRK or (I|-&gt;G) : TRK)</eval>
+                                                  <value class="org.eclipse.swt.graphics.RGB">
+                                                    <red>0</red>
+                                                    <green>0</green>
+                                                    <blue>0</blue>
+                                                  </value>
+                                                  <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                                  <isExpressionMode>false</isExpressionMode>
+                                                </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                  <type>#PREDICATE</type>
+                                                  <eval>this : OCC &amp; ((G|-&gt;H) : TRK or (H|-&gt;G) : TRK)</eval>
+                                                  <value class="int">2</value>
+                                                  <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</attribute>
+                                                  <isExpressionMode>false</isExpressionMode>
+                                                </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                              </setAttributeObjects>
+                                            </de.bmotionstudio.gef.editor.observer.SetAttribute>
+                                          </entry>
+                                        </observers>
+                                        <events/>
+                                        <attributes>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                              <value class="boolean">true</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeLabel</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                                              <value class="string">G</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                                              <value class="int">0</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                              <value class="string">control_19</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                                              <value class="int">2</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                              <value class="int">100</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnection</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                                              <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection">
+                                                <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection" reference=".."/>
+                                              </value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                              <value class="string"></value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                                              <value class="int">0</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                              <value class="int">100</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                              <value class="int">100</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                              <value class="string">G</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                              <value class="int">100</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                              <value class="org.eclipse.swt.graphics.RGB">
+                                                <red>0</red>
+                                                <green>0</green>
+                                                <blue>0</blue>
+                                              </value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                                          </entry>
+                                          <entry>
+                                            <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration</string>
+                                            <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                                              <value class="int">0</value>
+                                            </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                                          </entry>
+                                        </attributes>
+                                        <sourceConnections/>
+                                        <targetConnections/>
+                                        <isConnected>true</isConnected>
+                                        <source class="de.bmotionstudio.gef.editor.model.BShape">
+                                          <children/>
+                                          <observers/>
+                                          <events/>
+                                          <attributes>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeFillType</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                                                <value class="int">0</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                                <value class="boolean">true</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeDirection</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                                                <value class="int">0</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeOrientation</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                                                <value class="int">0</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeShape</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                                                <value class="int">0</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeImage</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeImage/>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                                <value class="string">control_6</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                                                <value class="org.eclipse.swt.graphics.RGB">
+                                                  <red>192</red>
+                                                  <green>192</green>
+                                                  <blue>192</blue>
+                                                </value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                                                <value class="int">0</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                                <value class="int">5</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                                <value class="string"></value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                                                <value class="org.eclipse.draw2d.geometry.Point">
+                                                  <x>203</x>
+                                                  <y>200</y>
+                                                </value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                                <value class="int">5</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeAlpha</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                                                <value class="int">255</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                                <value class="string"></value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                                <value class="int">228</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                                <value class="int">202</value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                                <value class="org.eclipse.swt.graphics.RGB">
+                                                  <red>0</red>
+                                                  <green>0</green>
+                                                  <blue>0</blue>
+                                                </value>
+                                              </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                            </entry>
+                                            <entry>
+                                              <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                                              <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                                            </entry>
+                                          </attributes>
+                                          <sourceConnections>
+                                            <connection reference="../../.."/>
+                                          </sourceConnections>
+                                          <targetConnections>
+                                            <connection>
+                                              <children/>
+                                              <observers>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+                                                  <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                                                    <setAttributeObjects>
+                                                      <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                        <type>#PREDICATE</type>
+                                                        <eval>this : OCC</eval>
+                                                        <value class="int">2</value>
+                                                        <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</attribute>
+                                                        <isExpressionMode>false</isExpressionMode>
+                                                      </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                      <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                        <type>#PREDICATE</type>
+                                                        <eval>this : resbl</eval>
+                                                        <value class="org.eclipse.swt.graphics.RGB">
+                                                          <red>0</red>
+                                                          <green>0</green>
+                                                          <blue>255</blue>
+                                                        </value>
+                                                        <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                                        <isExpressionMode>false</isExpressionMode>
+                                                      </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                      <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                        <type>#PREDICATE</type>
+                                                        <eval>this : OCC</eval>
+                                                        <value class="org.eclipse.swt.graphics.RGB">
+                                                          <red>255</red>
+                                                          <green>0</green>
+                                                          <blue>0</blue>
+                                                        </value>
+                                                        <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                                        <isExpressionMode>false</isExpressionMode>
+                                                      </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                      <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                        <type>#PREDICATE</type>
+                                                        <eval>this : OCC</eval>
+                                                        <value class="int">2</value>
+                                                        <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</attribute>
+                                                        <isExpressionMode>false</isExpressionMode>
+                                                      </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                                    </setAttributeObjects>
+                                                  </de.bmotionstudio.gef.editor.observer.SetAttribute>
+                                                </entry>
+                                              </observers>
+                                              <events/>
+                                              <attributes>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                                    <value class="boolean">true</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeLabel</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                                                    <value class="string">H</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                                                    <value class="int">0</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                                    <value class="string">control_15</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                                                    <value class="int">2</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                                    <value class="int">100</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnection</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                                                    <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection">
+                                                      <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection" reference=".."/>
+                                                    </value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                                    <value class="string"></value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                                                    <value class="int">0</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                                    <value class="int">100</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                                    <value class="int">100</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                                    <value class="string">H</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                                    <value class="int">100</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                                    <value class="org.eclipse.swt.graphics.RGB">
+                                                      <red>0</red>
+                                                      <green>0</green>
+                                                      <blue>0</blue>
+                                                    </value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                                                </entry>
+                                                <entry>
+                                                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration</string>
+                                                  <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                                                    <value class="int">0</value>
+                                                  </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                                                </entry>
+                                              </attributes>
+                                              <sourceConnections/>
+                                              <targetConnections/>
+                                              <isConnected>true</isConnected>
+                                              <source class="de.bmotionstudio.gef.editor.model.BShape">
+                                                <children/>
+                                                <observers/>
+                                                <events/>
+                                                <attributes>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeFillType</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                                                      <value class="int">0</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                                      <value class="boolean">true</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeDirection</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                                                      <value class="int">0</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeOrientation</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                                                      <value class="int">0</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeShape</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                                                      <value class="int">0</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeImage</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeImage/>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                                      <value class="string">control_5</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                                                      <value class="org.eclipse.swt.graphics.RGB">
+                                                        <red>192</red>
+                                                        <green>192</green>
+                                                        <blue>192</blue>
+                                                      </value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                                                      <value class="int">0</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                                      <value class="int">5</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                                      <value class="string"></value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                                                      <value class="org.eclipse.draw2d.geometry.Point">
+                                                        <x>66</x>
+                                                        <y>200</y>
+                                                      </value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                                      <value class="int">5</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeAlpha</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                                                      <value class="int">255</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                                      <value class="string"></value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                                      <value class="int">228</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                                      <value class="int">65</value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                                      <value class="org.eclipse.swt.graphics.RGB">
+                                                        <red>0</red>
+                                                        <green>0</green>
+                                                        <blue>0</blue>
+                                                      </value>
+                                                    </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                                  </entry>
+                                                  <entry>
+                                                    <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                                                    <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                                                  </entry>
+                                                </attributes>
+                                                <sourceConnections>
+                                                  <connection reference="../../.."/>
+                                                </sourceConnections>
+                                                <targetConnections/>
+                                              </source>
+                                              <target class="de.bmotionstudio.gef.editor.model.BShape" reference="../../.."/>
+                                            </connection>
+                                          </targetConnections>
+                                        </source>
+                                        <target class="de.bmotionstudio.gef.editor.model.BShape" reference="../../.."/>
+                                      </connection>
+                                      <connection reference="../../.."/>
+                                    </targetConnections>
+                                  </target>
+                                </connection>
+                                <connection>
+                                  <children/>
+                                  <observers>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+                                      <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                                        <setAttributeObjects>
+                                          <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                            <type>#PREDICATE</type>
+                                            <eval>this : OCC</eval>
+                                            <value class="int">2</value>
+                                            <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</attribute>
+                                            <isExpressionMode>false</isExpressionMode>
+                                          </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                          <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                            <type>#PREDICATE</type>
+                                            <eval>this : resbl</eval>
+                                            <value class="org.eclipse.swt.graphics.RGB">
+                                              <red>0</red>
+                                              <green>0</green>
+                                              <blue>255</blue>
+                                            </value>
+                                            <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                            <isExpressionMode>false</isExpressionMode>
+                                          </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                          <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                            <type>#PREDICATE</type>
+                                            <eval>this : OCC</eval>
+                                            <value class="org.eclipse.swt.graphics.RGB">
+                                              <red>255</red>
+                                              <green>0</green>
+                                              <blue>0</blue>
+                                            </value>
+                                            <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</attribute>
+                                            <isExpressionMode>false</isExpressionMode>
+                                          </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                          <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                            <type>#PREDICATE</type>
+                                            <eval>this : OCC</eval>
+                                            <value class="int">2</value>
+                                            <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</attribute>
+                                            <isExpressionMode>false</isExpressionMode>
+                                          </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                                        </setAttributeObjects>
+                                      </de.bmotionstudio.gef.editor.observer.SetAttribute>
+                                    </entry>
+                                  </observers>
+                                  <events/>
+                                  <attributes>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                        <value class="boolean">true</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeLabel</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                                        <value class="string">F</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                                        <value class="int">0</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                        <value class="string">control_31</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                                        <value class="int">2</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                        <value class="int">100</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnection</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                                        <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection">
+                                          <value class="de.bmotionstudio.gef.editor.attribute.BAttributeConnection" reference=".."/>
+                                        </value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeConnection>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                        <value class="string"></value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                                        <value class="int">0</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                        <value class="int">100</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                        <value class="int">100</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                        <value class="string">F</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                        <value class="int">100</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                        <value class="org.eclipse.swt.graphics.RGB">
+                                          <red>0</red>
+                                          <green>0</green>
+                                          <blue>0</blue>
+                                        </value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                                    </entry>
+                                    <entry>
+                                      <string>de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration</string>
+                                      <de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                                        <value class="int">0</value>
+                                      </de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration>
+                                    </entry>
+                                  </attributes>
+                                  <sourceConnections/>
+                                  <targetConnections/>
+                                  <isConnected>true</isConnected>
+                                  <source class="de.bmotionstudio.gef.editor.model.BShape" reference="../../.."/>
+                                  <target class="de.bmotionstudio.gef.editor.model.BShape">
+                                    <children/>
+                                    <observers/>
+                                    <events/>
+                                    <attributes>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeFillType</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                                          <value class="int">0</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeFillType>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                          <value class="boolean">true</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeDirection</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                                          <value class="int">0</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeDirection>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeOrientation</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                                          <value class="int">0</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeOrientation>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeShape</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                                          <value class="int">0</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeShape>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeImage</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeImage/>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                          <value class="string">control_29</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                                          <value class="org.eclipse.swt.graphics.RGB">
+                                            <red>192</red>
+                                            <green>192</green>
+                                            <blue>192</blue>
+                                          </value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                                          <value class="int">0</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                          <value class="int">5</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                          <value class="string"></value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                                          <value class="org.eclipse.draw2d.geometry.Point">
+                                            <x>790</x>
+                                            <y>143</y>
+                                          </value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                          <value class="int">5</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeAlpha</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                                          <value class="int">255</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeAlpha>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                          <value class="string"></value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                          <value class="int">143</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                          <value class="int">790</value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                          <value class="org.eclipse.swt.graphics.RGB">
+                                            <red>0</red>
+                                            <green>0</green>
+                                            <blue>0</blue>
+                                          </value>
+                                        </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                                      </entry>
+                                      <entry>
+                                        <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                                        <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                                      </entry>
+                                    </attributes>
+                                    <sourceConnections/>
+                                    <targetConnections>
+                                      <connection reference="../../.."/>
+                                    </targetConnections>
+                                  </target>
+                                </connection>
+                              </sourceConnections>
+                              <targetConnections>
+                                <connection reference="../../.."/>
+                              </targetConnections>
+                            </target>
+                          </connection>
+                        </sourceConnections>
+                        <targetConnections>
+                          <connection reference="../../.."/>
+                        </targetConnections>
+                      </target>
+                    </connection>
+                  </sourceConnections>
+                  <targetConnections>
+                    <connection reference="../../.."/>
+                  </targetConnections>
+                </target>
+              </connection>
+            </sourceConnections>
+            <targetConnections>
+              <connection reference="../../.."/>
+            </targetConnections>
+          </target>
+        </connection>
+      </sourceConnections>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BShape>
+    <de.bmotionstudio.gef.editor.model.BShape reference="../de.bmotionstudio.gef.editor.model.BShape/sourceConnections/connection/target"/>
+    <de.bmotionstudio.gef.editor.model.BShape reference="../de.bmotionstudio.gef.editor.model.BShape/sourceConnections/connection/target/sourceConnections/connection[2]/target/sourceConnections/connection/target/sourceConnections/connection/target/sourceConnections/connection/target/targetConnections/connection/source/targetConnections/connection/source"/>
+    <de.bmotionstudio.gef.editor.model.BShape reference="../de.bmotionstudio.gef.editor.model.BShape/sourceConnections/connection/target/sourceConnections/connection[2]/target/sourceConnections/connection/target/sourceConnections/connection/target/sourceConnections/connection/target/targetConnections/connection/source"/>
+    <de.bmotionstudio.gef.editor.model.BShape reference="../de.bmotionstudio.gef.editor.model.BShape/sourceConnections/connection/target/sourceConnections/connection[2]/target/sourceConnections/connection/target/sourceConnections/connection/target/sourceConnections/connection/target/sourceConnections/connection/target/targetConnections/connection/source"/>
+    <de.bmotionstudio.gef.editor.model.BShape reference="../de.bmotionstudio.gef.editor.model.BShape/sourceConnections/connection/target/sourceConnections/connection[2]/target/sourceConnections/connection/target/sourceConnections/connection/target/sourceConnections/connection/target/sourceConnections/connection/target"/>
+    <de.bmotionstudio.gef.editor.model.BShape reference="../de.bmotionstudio.gef.editor.model.BShape/sourceConnections/connection/target/sourceConnections/connection/target"/>
+    <de.bmotionstudio.gef.editor.model.BShape reference="../de.bmotionstudio.gef.editor.model.BShape/sourceConnections/connection/target/sourceConnections/connection[2]/target"/>
+    <de.bmotionstudio.gef.editor.model.BShape reference="../de.bmotionstudio.gef.editor.model.BShape/sourceConnections/connection/target/sourceConnections/connection[2]/target/sourceConnections/connection/target"/>
+    <de.bmotionstudio.gef.editor.model.BShape reference="../de.bmotionstudio.gef.editor.model.BShape/sourceConnections/connection/target/sourceConnections/connection/target/sourceConnections/connection/target"/>
+    <de.bmotionstudio.gef.editor.model.BShape reference="../de.bmotionstudio.gef.editor.model.BShape/sourceConnections/connection/target/sourceConnections/connection[2]/target/sourceConnections/connection/target/sourceConnections/connection/target/sourceConnections/connection/target"/>
+    <de.bmotionstudio.gef.editor.model.BShape reference="../de.bmotionstudio.gef.editor.model.BShape/sourceConnections/connection/target/sourceConnections/connection[2]/target/sourceConnections/connection/target/sourceConnections/connection/target"/>
+    <de.bmotionstudio.gef.editor.model.BShape reference="../de.bmotionstudio.gef.editor.model.BShape/sourceConnections/connection/target/sourceConnections/connection[2]/target/sourceConnections/connection/target/sourceConnections/connection/target/sourceConnections/connection[2]/target"/>
+    <de.bmotionstudio.gef.editor.model.BTable>
+      <children>
+        <de.bmotionstudio.gef.editor.model.BTableColumn>
+          <children>
+            <de.bmotionstudio.gef.editor.model.BTableCell>
+              <children/>
+              <observers/>
+              <events/>
+              <attributes>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                    <value class="boolean">true</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>0</red>
+                      <green>0</green>
+                      <blue>0</blue>
+                    </value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                    <value class="string">control_39</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>0</red>
+                      <green>128</green>
+                      <blue>255</blue>
+                    </value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                    <value class="int">141</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                    <value class="string"></value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+                    <value class="string">Reserved tracks (rsrtbl)</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                    <value class="int">20</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                    <value class="int">0</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                    <value class="string"></value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                    <value class="int">0</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>0</red>
+                      <green>0</green>
+                      <blue>0</blue>
+                    </value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                </entry>
+              </attributes>
+              <sourceConnections/>
+              <targetConnections/>
+            </de.bmotionstudio.gef.editor.model.BTableCell>
+            <de.bmotionstudio.gef.editor.model.BTableCell>
+              <children/>
+              <observers/>
+              <events/>
+              <attributes>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                    <value class="boolean">true</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>0</red>
+                      <green>0</green>
+                      <blue>0</blue>
+                    </value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                    <value class="string">control_21</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>130</red>
+                      <green>192</green>
+                      <blue>255</blue>
+                    </value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                    <value class="int">141</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                    <value class="string"></value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+                    <value class="string">Block</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                    <value class="int">20</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                    <value class="int">0</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                    <value class="string"></value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                    <value class="int">0</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>0</red>
+                      <green>0</green>
+                      <blue>0</blue>
+                    </value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                </entry>
+              </attributes>
+              <sourceConnections/>
+              <targetConnections/>
+            </de.bmotionstudio.gef.editor.model.BTableCell>
+          </children>
+          <observers/>
+          <events/>
+          <attributes>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                <value class="int">141</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                <value class="boolean">true</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                <value class="int">100</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                <value class="string">control_20</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                <value class="org.eclipse.swt.graphics.RGB">
+                  <red>0</red>
+                  <green>0</green>
+                  <blue>0</blue>
+                </value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+            </entry>
+          </attributes>
+          <sourceConnections/>
+          <targetConnections/>
+        </de.bmotionstudio.gef.editor.model.BTableColumn>
+        <de.bmotionstudio.gef.editor.model.BTableColumn>
+          <children>
+            <de.bmotionstudio.gef.editor.model.BTableCell>
+              <children/>
+              <observers/>
+              <events/>
+              <attributes>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                    <value class="boolean">true</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+                    <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.BTableColumn/children/de.bmotionstudio.gef.editor.model.BTableCell/attributes/entry[2]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                    <value class="string">control_40</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                    <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.BTableColumn/children/de.bmotionstudio.gef.editor.model.BTableCell/attributes/entry[4]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                    <value class="int">143</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                    <value class="string"></value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+                    <value class="string"></value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                    <value class="int">20</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                    <value class="int">0</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                    <value class="string"></value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                    <value class="int">32</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>0</red>
+                      <green>0</green>
+                      <blue>0</blue>
+                    </value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                </entry>
+              </attributes>
+              <sourceConnections/>
+              <targetConnections/>
+            </de.bmotionstudio.gef.editor.model.BTableCell>
+            <de.bmotionstudio.gef.editor.model.BTableCell>
+              <children/>
+              <observers>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.observer.SimpleValueDisplay</string>
+                  <de.bmotionstudio.gef.editor.observer.SimpleValueDisplay>
+                    <eval>ran(rsrtbl)</eval>
+                    <predicate></predicate>
+                    <replacementString>(%R%)</replacementString>
+                  </de.bmotionstudio.gef.editor.observer.SimpleValueDisplay>
+                </entry>
+              </observers>
+              <events/>
+              <attributes>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                    <value class="boolean">true</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+                    <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.BTableColumn/children/de.bmotionstudio.gef.editor.model.BTableCell[2]/attributes/entry[2]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                    <value class="string">control_28</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                    <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.BTableColumn/children/de.bmotionstudio.gef.editor.model.BTableCell[2]/attributes/entry[4]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                    <value class="int">143</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                    <value class="string"></value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+                    <value class="string">Route (%R%)</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                    <value class="int">20</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                    <value class="int">20</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                    <value class="string"></value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                    <value class="int">0</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>0</red>
+                      <green>0</green>
+                      <blue>0</blue>
+                    </value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                </entry>
+              </attributes>
+              <sourceConnections/>
+              <targetConnections/>
+            </de.bmotionstudio.gef.editor.model.BTableCell>
+          </children>
+          <observers/>
+          <events/>
+          <attributes>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                <value class="int">143</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                <value class="boolean">true</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                <value class="int">100</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                <value class="int">100</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                <value class="int">100</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                <value class="string">control_27</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                <value class="org.eclipse.swt.graphics.RGB">
+                  <red>0</red>
+                  <green>0</green>
+                  <blue>0</blue>
+                </value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+            </entry>
+          </attributes>
+          <sourceConnections/>
+          <targetConnections/>
+        </de.bmotionstudio.gef.editor.model.BTableColumn>
+      </children>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.TableObserver</string>
+          <de.bmotionstudio.gef.editor.observer.TableObserver>
+            <expression>rsrtbl</expression>
+            <overrideCells>false</overrideCells>
+            <keepHeader>false</keepHeader>
+          </de.bmotionstudio.gef.editor.observer.TableObserver>
+        </entry>
+      </observers>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_19</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">100</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">100</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">362</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">316</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeColumns</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeColumns>
+            <value class="int">2</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeColumns>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+            <value class="org.eclipse.swt.graphics.RGB">
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeRows</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeRows>
+            <value class="int">2</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeRows>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BTable>
+    <de.bmotionstudio.gef.editor.model.BTable>
+      <children>
+        <de.bmotionstudio.gef.editor.model.BTableColumn>
+          <children>
+            <de.bmotionstudio.gef.editor.model.BTableCell>
+              <children/>
+              <observers/>
+              <events/>
+              <attributes>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                    <value class="boolean">true</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>0</red>
+                      <green>0</green>
+                      <blue>0</blue>
+                    </value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                    <value class="string">control_46</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>255</red>
+                      <green>0</green>
+                      <blue>0</blue>
+                    </value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                    <value class="int">155</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                    <value class="string"></value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+                    <value class="string">Occupied blocks (OCC)</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                    <value class="int">20</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                    <value class="int">0</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                    <value class="string"></value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                    <value class="int">0</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>0</red>
+                      <green>0</green>
+                      <blue>0</blue>
+                    </value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                </entry>
+              </attributes>
+              <sourceConnections/>
+              <targetConnections/>
+            </de.bmotionstudio.gef.editor.model.BTableCell>
+          </children>
+          <observers/>
+          <events/>
+          <attributes>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                <value class="int">155</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                <value class="boolean">true</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                <value class="int">100</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                <value class="string">control_45</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                <value class="org.eclipse.swt.graphics.RGB">
+                  <red>0</red>
+                  <green>0</green>
+                  <blue>0</blue>
+                </value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+            </entry>
+          </attributes>
+          <sourceConnections/>
+          <targetConnections/>
+        </de.bmotionstudio.gef.editor.model.BTableColumn>
+      </children>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.TableObserver</string>
+          <de.bmotionstudio.gef.editor.observer.TableObserver>
+            <expression> OCC</expression>
+            <overrideCells>false</overrideCells>
+            <keepHeader>false</keepHeader>
+          </de.bmotionstudio.gef.editor.observer.TableObserver>
+        </entry>
+      </observers>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_44</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">100</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">100</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">362</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">628</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeColumns</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeColumns>
+            <value class="int">1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeColumns>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+            <value class="org.eclipse.swt.graphics.RGB">
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeRows</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeRows>
+            <value class="int">1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeRows>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BTable>
+    <de.bmotionstudio.gef.editor.model.BTable>
+      <children>
+        <de.bmotionstudio.gef.editor.model.BTableColumn>
+          <children>
+            <de.bmotionstudio.gef.editor.model.BTableCell>
+              <children/>
+              <observers/>
+              <events/>
+              <attributes>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                    <value class="boolean">true</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+                    <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../../../de.bmotionstudio.gef.editor.model.BTable[2]/children/de.bmotionstudio.gef.editor.model.BTableColumn/children/de.bmotionstudio.gef.editor.model.BTableCell/attributes/entry[2]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                    <value class="string">control_46</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>0</red>
+                      <green>128</green>
+                      <blue>255</blue>
+                    </value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                    <value class="int">133</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                    <value class="string"></value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+                    <value class="string">Reserved blocks (resbl)</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                    <value class="int">20</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                    <value class="int">0</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                    <value class="string"></value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                    <value class="int">0</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                    <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../../../de.bmotionstudio.gef.editor.model.BTable[2]/children/de.bmotionstudio.gef.editor.model.BTableColumn/children/de.bmotionstudio.gef.editor.model.BTableCell/attributes/entry[13]/de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor/value"/>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                </entry>
+              </attributes>
+              <sourceConnections reference="../../../../../../de.bmotionstudio.gef.editor.model.BTable[2]/children/de.bmotionstudio.gef.editor.model.BTableColumn/children/de.bmotionstudio.gef.editor.model.BTableCell/sourceConnections"/>
+              <targetConnections reference="../../../../../../de.bmotionstudio.gef.editor.model.BTable[2]/children/de.bmotionstudio.gef.editor.model.BTableColumn/children/de.bmotionstudio.gef.editor.model.BTableCell/targetConnections"/>
+            </de.bmotionstudio.gef.editor.model.BTableCell>
+          </children>
+          <observers/>
+          <events/>
+          <attributes>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                <value class="int">133</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                <value class="boolean">true</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                <value class="int">100</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                <value class="string">control_45</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.BTable[2]/children/de.bmotionstudio.gef.editor.model.BTableColumn/attributes/entry[10]/de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor/value"/>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+            </entry>
+          </attributes>
+          <sourceConnections reference="../../../../de.bmotionstudio.gef.editor.model.BTable[2]/children/de.bmotionstudio.gef.editor.model.BTableColumn/sourceConnections"/>
+          <targetConnections reference="../../../../de.bmotionstudio.gef.editor.model.BTable[2]/children/de.bmotionstudio.gef.editor.model.BTableColumn/targetConnections"/>
+        </de.bmotionstudio.gef.editor.model.BTableColumn>
+      </children>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.TableObserver</string>
+          <de.bmotionstudio.gef.editor.observer.TableObserver>
+            <expression> resbl</expression>
+            <overrideCells>false</overrideCells>
+            <keepHeader>false</keepHeader>
+          </de.bmotionstudio.gef.editor.observer.TableObserver>
+        </entry>
+      </observers>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_44</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">100</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">100</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">362</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">32</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BTable[2]/attributes/entry[11]/de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeColumns</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeColumns>
+            <value class="int">1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeColumns>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeRows</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeRows>
+            <value class="int">1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeRows>
+        </entry>
+      </attributes>
+      <sourceConnections reference="../../de.bmotionstudio.gef.editor.model.BTable[2]/sourceConnections"/>
+      <targetConnections reference="../../de.bmotionstudio.gef.editor.model.BTable[2]/targetConnections"/>
+    </de.bmotionstudio.gef.editor.model.BTable>
+    <de.bmotionstudio.gef.editor.model.BTable>
+      <children>
+        <de.bmotionstudio.gef.editor.model.BTableColumn>
+          <children>
+            <de.bmotionstudio.gef.editor.model.BTableCell>
+              <children/>
+              <observers/>
+              <events/>
+              <attributes>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                    <value class="boolean">true</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+                    <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../../../de.bmotionstudio.gef.editor.model.BTable[2]/children/de.bmotionstudio.gef.editor.model.BTableColumn/children/de.bmotionstudio.gef.editor.model.BTableCell/attributes/entry[2]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                    <value class="string">control_46</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                    <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../../../de.bmotionstudio.gef.editor.model.BTable[3]/children/de.bmotionstudio.gef.editor.model.BTableColumn/children/de.bmotionstudio.gef.editor.model.BTableCell/attributes/entry[4]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                    <value class="int">132</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                    <value class="string"></value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+                    <value class="string">Reserved routes (resrt)</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                    <value class="int">20</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                    <value class="int">0</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                    <value class="string"></value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                    <value class="int">0</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                    <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../../../de.bmotionstudio.gef.editor.model.BTable[2]/children/de.bmotionstudio.gef.editor.model.BTableColumn/children/de.bmotionstudio.gef.editor.model.BTableCell/attributes/entry[13]/de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor/value"/>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                </entry>
+              </attributes>
+              <sourceConnections reference="../../../../../../de.bmotionstudio.gef.editor.model.BTable[2]/children/de.bmotionstudio.gef.editor.model.BTableColumn/children/de.bmotionstudio.gef.editor.model.BTableCell/sourceConnections"/>
+              <targetConnections reference="../../../../../../de.bmotionstudio.gef.editor.model.BTable[2]/children/de.bmotionstudio.gef.editor.model.BTableColumn/children/de.bmotionstudio.gef.editor.model.BTableCell/targetConnections"/>
+            </de.bmotionstudio.gef.editor.model.BTableCell>
+          </children>
+          <observers/>
+          <events/>
+          <attributes>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                <value class="int">132</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                <value class="boolean">true</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                <value class="int">100</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                <value class="string">control_45</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.BTable[2]/children/de.bmotionstudio.gef.editor.model.BTableColumn/attributes/entry[10]/de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor/value"/>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+            </entry>
+          </attributes>
+          <sourceConnections reference="../../../../de.bmotionstudio.gef.editor.model.BTable[2]/children/de.bmotionstudio.gef.editor.model.BTableColumn/sourceConnections"/>
+          <targetConnections reference="../../../../de.bmotionstudio.gef.editor.model.BTable[2]/children/de.bmotionstudio.gef.editor.model.BTableColumn/targetConnections"/>
+        </de.bmotionstudio.gef.editor.model.BTableColumn>
+      </children>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.TableObserver</string>
+          <de.bmotionstudio.gef.editor.observer.TableObserver>
+            <expression> resrt</expression>
+            <overrideCells>false</overrideCells>
+            <keepHeader>false</keepHeader>
+          </de.bmotionstudio.gef.editor.observer.TableObserver>
+        </entry>
+      </observers>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_44</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">100</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">100</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">362</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">174</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeColumns</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeColumns>
+            <value class="int">1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeColumns>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BTable[2]/attributes/entry[11]/de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeRows</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeRows>
+            <value class="int">1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeRows>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections reference="../../de.bmotionstudio.gef.editor.model.BTable[2]/sourceConnections"/>
+      <targetConnections reference="../../de.bmotionstudio.gef.editor.model.BTable[2]/targetConnections"/>
+    </de.bmotionstudio.gef.editor.model.BTable>
+    <de.bmotionstudio.gef.editor.model.BButton>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate</string>
+          <de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+                <value class="boolean">true</value>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</attribute>
+                <isExpressionMode>false</isExpressionMode>
+                <operationName>route_reservation</operationName>
+                <predicate>r=this</predicate>
+                <random>false</random>
+                <maxrandom>1</maxrandom>
+              </de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+            </list>
+          </de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+        </entry>
+      </observers>
+      <events>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.event.OnClickEvent</string>
+          <de.bmotionstudio.gef.editor.scheduler.ExecuteAnimationScript>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject>
+                <steps>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>route_reservation</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>point_positionning</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>route_formation</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                </steps>
+                <predicate></predicate>
+              </de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject>
+            </list>
+          </de.bmotionstudio.gef.editor.scheduler.ExecuteAnimationScript>
+        </entry>
+      </events>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB">
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+            <value class="boolean">false</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_0</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB">
+              <red>192</red>
+              <green>192</green>
+              <blue>192</blue>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">60</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">Route 1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">25</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">208</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">R1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">578</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize>
+            <value class="org.eclipse.draw2d.geometry.Point">
+              <x>60</x>
+              <y>25</y>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeSize>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BButton>
+    <de.bmotionstudio.gef.editor.model.BButton>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate</string>
+          <de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+                <value class="boolean">true</value>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</attribute>
+                <isExpressionMode>false</isExpressionMode>
+                <operationName>route_reservation</operationName>
+                <predicate>r=this</predicate>
+                <random>false</random>
+                <maxrandom>1</maxrandom>
+              </de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+            </list>
+          </de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+        </entry>
+      </observers>
+      <events>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.event.OnClickEvent</string>
+          <de.bmotionstudio.gef.editor.scheduler.ExecuteAnimationScript>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject>
+                <steps>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>route_reservation</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>point_positionning</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>route_formation</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                </steps>
+                <predicate></predicate>
+              </de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject>
+            </list>
+          </de.bmotionstudio.gef.editor.scheduler.ExecuteAnimationScript>
+        </entry>
+      </events>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton/attributes/entry[2]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+            <value class="boolean">false</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_18</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton/attributes/entry[5]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">60</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">Route 8</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">25</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">305</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">R8</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">652</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize>
+            <value class="org.eclipse.draw2d.geometry.Point">
+              <x>60</x>
+              <y>25</y>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeSize>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BButton>
+    <de.bmotionstudio.gef.editor.model.BButton>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate</string>
+          <de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+                <value class="boolean">true</value>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</attribute>
+                <isExpressionMode>false</isExpressionMode>
+                <operationName>route_reservation</operationName>
+                <predicate>r=this</predicate>
+                <random>false</random>
+                <maxrandom>1</maxrandom>
+              </de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+            </list>
+          </de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+        </entry>
+      </observers>
+      <events>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.event.OnClickEvent</string>
+          <de.bmotionstudio.gef.editor.scheduler.ExecuteAnimationScript>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject>
+                <steps>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>route_reservation</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>point_positionning</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>route_formation</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                </steps>
+                <predicate></predicate>
+              </de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject>
+            </list>
+          </de.bmotionstudio.gef.editor.scheduler.ExecuteAnimationScript>
+        </entry>
+      </events>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton/attributes/entry[2]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+            <value class="boolean">false</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_14</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton/attributes/entry[5]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">60</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">Route 4</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">25</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">305</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">R4</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">578</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize>
+            <value class="org.eclipse.draw2d.geometry.Point">
+              <x>60</x>
+              <y>25</y>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeSize>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BButton>
+    <de.bmotionstudio.gef.editor.model.BButton>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate</string>
+          <de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+                <value class="boolean">true</value>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</attribute>
+                <isExpressionMode>false</isExpressionMode>
+                <operationName>route_reservation</operationName>
+                <predicate>r=this</predicate>
+                <random>false</random>
+                <maxrandom>1</maxrandom>
+              </de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+            </list>
+          </de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+        </entry>
+      </observers>
+      <events>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.event.OnClickEvent</string>
+          <de.bmotionstudio.gef.editor.scheduler.ExecuteAnimationScript>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject>
+                <steps>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>route_reservation</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>point_positionning</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>route_formation</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                </steps>
+                <predicate></predicate>
+              </de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject>
+            </list>
+          </de.bmotionstudio.gef.editor.scheduler.ExecuteAnimationScript>
+        </entry>
+      </events>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton/attributes/entry[2]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+            <value class="boolean">false</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_2</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton/attributes/entry[5]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">60</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">Route 3</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">25</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">271</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">R3</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">578</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize>
+            <value class="org.eclipse.draw2d.geometry.Point">
+              <x>60</x>
+              <y>25</y>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeSize>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BButton>
+    <de.bmotionstudio.gef.editor.model.BButton>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate</string>
+          <de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+                <value class="boolean">true</value>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</attribute>
+                <isExpressionMode>false</isExpressionMode>
+                <operationName>route_reservation</operationName>
+                <predicate>r=this</predicate>
+                <random>false</random>
+                <maxrandom>1</maxrandom>
+              </de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+            </list>
+          </de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+        </entry>
+      </observers>
+      <events>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.event.OnClickEvent</string>
+          <de.bmotionstudio.gef.editor.scheduler.ExecuteAnimationScript>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject>
+                <steps>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>route_reservation</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>point_positionning</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>route_formation</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                </steps>
+                <predicate></predicate>
+              </de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject>
+            </list>
+          </de.bmotionstudio.gef.editor.scheduler.ExecuteAnimationScript>
+        </entry>
+      </events>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton/attributes/entry[2]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+            <value class="boolean">false</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton/attributes/entry[5]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">60</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">Route 2</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">25</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">242</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">R2</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">578</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize>
+            <value class="org.eclipse.draw2d.geometry.Point">
+              <x>60</x>
+              <y>25</y>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeSize>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BButton>
+    <de.bmotionstudio.gef.editor.model.BButton>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate</string>
+          <de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+                <value class="boolean">true</value>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</attribute>
+                <isExpressionMode>false</isExpressionMode>
+                <operationName>route_reservation</operationName>
+                <predicate>r=this</predicate>
+                <random>false</random>
+                <maxrandom>1</maxrandom>
+              </de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+            </list>
+          </de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+        </entry>
+      </observers>
+      <events>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.event.OnClickEvent</string>
+          <de.bmotionstudio.gef.editor.scheduler.ExecuteAnimationScript>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject>
+                <steps>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>route_reservation</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>point_positionning</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>route_formation</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                </steps>
+                <predicate></predicate>
+              </de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject>
+            </list>
+          </de.bmotionstudio.gef.editor.scheduler.ExecuteAnimationScript>
+        </entry>
+      </events>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton/attributes/entry[2]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+            <value class="boolean">false</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_15</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton/attributes/entry[5]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">60</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">Route 6</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">25</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">242</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">R6</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">652</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize>
+            <value class="org.eclipse.draw2d.geometry.Point">
+              <x>60</x>
+              <y>25</y>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeSize>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BButton>
+    <de.bmotionstudio.gef.editor.model.BButton>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate</string>
+          <de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+                <value class="boolean">true</value>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</attribute>
+                <isExpressionMode>false</isExpressionMode>
+                <operationName>route_reservation</operationName>
+                <predicate>r=this</predicate>
+                <random>false</random>
+                <maxrandom>1</maxrandom>
+              </de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+            </list>
+          </de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+        </entry>
+      </observers>
+      <events>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.event.OnClickEvent</string>
+          <de.bmotionstudio.gef.editor.scheduler.ExecuteAnimationScript>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject>
+                <steps>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>route_reservation</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>point_positionning</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>route_formation</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                </steps>
+                <predicate></predicate>
+              </de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject>
+            </list>
+          </de.bmotionstudio.gef.editor.scheduler.ExecuteAnimationScript>
+        </entry>
+      </events>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton/attributes/entry[2]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+            <value class="boolean">false</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_16</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton/attributes/entry[5]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">60</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">Route 7</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">25</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">271</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">R7</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">652</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize>
+            <value class="org.eclipse.draw2d.geometry.Point">
+              <x>60</x>
+              <y>25</y>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeSize>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BButton>
+    <de.bmotionstudio.gef.editor.model.BButton>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate</string>
+          <de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+                <value class="boolean">true</value>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</attribute>
+                <isExpressionMode>false</isExpressionMode>
+                <operationName>route_reservation</operationName>
+                <predicate>r=this</predicate>
+                <random>false</random>
+                <maxrandom>1</maxrandom>
+              </de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+            </list>
+          </de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+        </entry>
+      </observers>
+      <events>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.event.OnClickEvent</string>
+          <de.bmotionstudio.gef.editor.scheduler.ExecuteAnimationScript>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject>
+                <steps>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>route_reservation</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>point_positionning</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                  <de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                    <command>route_formation</command>
+                    <parameter>r = this</parameter>
+                    <maxrandom>1</maxrandom>
+                  </de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep>
+                </steps>
+                <predicate></predicate>
+              </de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject>
+            </list>
+          </de.bmotionstudio.gef.editor.scheduler.ExecuteAnimationScript>
+        </entry>
+      </events>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton/attributes/entry[2]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+            <value class="boolean">false</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_17</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton/attributes/entry[5]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">60</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">Route 5</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">25</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">208</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">R5</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">652</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize>
+            <value class="org.eclipse.draw2d.geometry.Point">
+              <x>60</x>
+              <y>25</y>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeSize>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BButton>
+    <de.bmotionstudio.gef.editor.model.BTable>
+      <children>
+        <de.bmotionstudio.gef.editor.model.BTableColumn>
+          <children>
+            <de.bmotionstudio.gef.editor.model.BTableCell>
+              <children/>
+              <observers/>
+              <events/>
+              <attributes>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                    <value class="boolean">true</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>0</red>
+                      <green>0</green>
+                      <blue>0</blue>
+                    </value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                    <value class="string">control_30</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>0</red>
+                      <green>255</green>
+                      <blue>0</blue>
+                    </value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                    <value class="int">94</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                    <value class="string"></value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+                    <value class="string">Green</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                    <value class="int">20</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                    <value class="int">0</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                    <value class="string"></value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                    <value class="int">0</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>0</red>
+                      <green>0</green>
+                      <blue>0</blue>
+                    </value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                </entry>
+              </attributes>
+              <sourceConnections/>
+              <targetConnections/>
+            </de.bmotionstudio.gef.editor.model.BTableCell>
+          </children>
+          <observers>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.observer.ColumnObserver</string>
+              <de.bmotionstudio.gef.editor.observer.ColumnObserver>
+                <expression>GRN</expression>
+              </de.bmotionstudio.gef.editor.observer.ColumnObserver>
+            </entry>
+          </observers>
+          <events/>
+          <attributes>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                <value class="int">94</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                <value class="boolean">true</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                <value class="int">100</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                <value class="string">control_26</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                <value class="org.eclipse.swt.graphics.RGB">
+                  <red>0</red>
+                  <green>0</green>
+                  <blue>0</blue>
+                </value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+            </entry>
+          </attributes>
+          <sourceConnections/>
+          <targetConnections/>
+        </de.bmotionstudio.gef.editor.model.BTableColumn>
+        <de.bmotionstudio.gef.editor.model.BTableColumn>
+          <children>
+            <de.bmotionstudio.gef.editor.model.BTableCell>
+              <children/>
+              <observers/>
+              <events/>
+              <attributes>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                    <value class="boolean">true</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>0</red>
+                      <green>0</green>
+                      <blue>0</blue>
+                    </value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                    <value class="string">control_32</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>255</red>
+                      <green>0</green>
+                      <blue>0</blue>
+                    </value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                    <value class="int">100</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                    <value class="string"></value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+                    <value class="string">Red</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                    <value class="int">20</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                    <value class="int">0</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                    <value class="string"></value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                    <value class="int">0</value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>0</red>
+                      <green>0</green>
+                      <blue>0</blue>
+                    </value>
+                  </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                </entry>
+                <entry>
+                  <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+                  <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+                </entry>
+              </attributes>
+              <sourceConnections/>
+              <targetConnections/>
+            </de.bmotionstudio.gef.editor.model.BTableCell>
+          </children>
+          <observers>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.observer.ColumnObserver</string>
+              <de.bmotionstudio.gef.editor.observer.ColumnObserver>
+                <expression>ran(SIG) \ GRN</expression>
+              </de.bmotionstudio.gef.editor.observer.ColumnObserver>
+            </entry>
+          </observers>
+          <events/>
+          <attributes>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                <value class="int">100</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                <value class="boolean">true</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                <value class="int">100</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                <value class="int">100</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                <value class="string">control_31</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                <value class="int">100</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+                <value class="org.eclipse.swt.graphics.RGB">
+                  <red>0</red>
+                  <green>0</green>
+                  <blue>0</blue>
+                </value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+            </entry>
+          </attributes>
+          <sourceConnections/>
+          <targetConnections/>
+        </de.bmotionstudio.gef.editor.model.BTableColumn>
+      </children>
+      <observers/>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_24</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">100</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">100</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">590</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">32</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+            <value class="org.eclipse.swt.graphics.RGB">
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeColumns</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeColumns>
+            <value class="int">2</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeColumns>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeRows</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeRows>
+            <value class="int">1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeRows>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BTable>
+    <de.bmotionstudio.gef.editor.model.BText>
+      <children/>
+      <observers/>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeFont</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeFont>
+            <value class="string">1|Arial Narrow|9.75|1|WINDOWS|1|-13|0|0|0|700|0|0|0|0|3|2|1|34|Arial Narrow</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeFont>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB">
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_35</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB">
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">161</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">Lights</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+            <value class="org.eclipse.draw2d.geometry.Point">
+              <x>32</x>
+              <y>565</y>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">19</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">565</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">32</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BText>
+    <de.bmotionstudio.gef.editor.model.BText>
+      <children/>
+      <observers/>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeFont</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeFont>
+            <value class="string">1||9.75|1|WINDOWS|1|-13|0|0|0|700|0|0|0|0|0|0|0|0|</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeFont>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB">
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_41</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB">
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">113</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">Reserve routes</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">19</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">184</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">578</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BText>
+    <de.bmotionstudio.gef.editor.model.Signal>
+      <children>
+        <de.bmotionstudio.gef.editor.model.Light>
+          <children/>
+          <observers>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+              <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                <setAttributeObjects>
+                  <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                    <type>#PREDICATE</type>
+                    <eval>this /: GRN</eval>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>255</red>
+                      <green>0</green>
+                      <blue>0</blue>
+                    </value>
+                    <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</attribute>
+                    <isExpressionMode>false</isExpressionMode>
+                  </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                </setAttributeObjects>
+              </de.bmotionstudio.gef.editor.observer.SetAttribute>
+            </entry>
+          </observers>
+          <events/>
+          <attributes>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                <value class="int">12</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                <value class="boolean">true</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                <value class="int">12</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                <value class="string">S1</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                <value class="org.eclipse.swt.graphics.RGB">
+                  <red>192</red>
+                  <green>192</green>
+                  <blue>192</blue>
+                </value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                <value class="string">control_33</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+            </entry>
+          </attributes>
+          <sourceConnections/>
+          <targetConnections/>
+        </de.bmotionstudio.gef.editor.model.Light>
+        <de.bmotionstudio.gef.editor.model.Light>
+          <children/>
+          <observers>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+              <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                <setAttributeObjects>
+                  <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                    <type>#PREDICATE</type>
+                    <eval>this : GRN</eval>
+                    <value class="org.eclipse.swt.graphics.RGB">
+                      <red>0</red>
+                      <green>255</green>
+                      <blue>0</blue>
+                    </value>
+                    <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</attribute>
+                    <isExpressionMode>false</isExpressionMode>
+                  </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                </setAttributeObjects>
+              </de.bmotionstudio.gef.editor.observer.SetAttribute>
+            </entry>
+          </observers>
+          <events/>
+          <attributes>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                <value class="int">12</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                <value class="boolean">true</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                <value class="int">12</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                <value class="string">S1</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                <value class="org.eclipse.swt.graphics.RGB">
+                  <red>192</red>
+                  <green>192</green>
+                  <blue>192</blue>
+                </value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                <value class="string">control_34</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+            </entry>
+          </attributes>
+          <sourceConnections/>
+          <targetConnections/>
+        </de.bmotionstudio.gef.editor.model.Light>
+      </children>
+      <observers/>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeLabel</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+            <value class="string">Signal</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.AttributeTrackDirection</string>
+          <de.bmotionstudio.gef.editor.attribute.AttributeTrackDirection>
+            <value class="int">0</value>
+          </de.bmotionstudio.gef.editor.attribute.AttributeTrackDirection>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">S1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">68</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.AttributeLights</string>
+          <de.bmotionstudio.gef.editor.attribute.AttributeLights>
+            <value class="int">2</value>
+          </de.bmotionstudio.gef.editor.attribute.AttributeLights>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">48</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">75</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">S1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">34</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.Signal>
+    <de.bmotionstudio.gef.editor.model.Signal>
+      <children>
+        <de.bmotionstudio.gef.editor.model.Light>
+          <children/>
+          <observers>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+              <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                <setAttributeObjects>
+                  <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                    <type>#PREDICATE</type>
+                    <eval>this /: GRN</eval>
+                    <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject/value"/>
+                    <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</attribute>
+                    <isExpressionMode>false</isExpressionMode>
+                  </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                </setAttributeObjects>
+              </de.bmotionstudio.gef.editor.observer.SetAttribute>
+            </entry>
+          </observers>
+          <events/>
+          <attributes>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                <value class="int">12</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                <value class="boolean">true</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                <value class="int">12</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                <value class="string">S2</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                <value class="string">control_33</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light/attributes/entry[8]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+            </entry>
+          </attributes>
+          <sourceConnections reference="../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light/sourceConnections"/>
+          <targetConnections reference="../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light/targetConnections"/>
+        </de.bmotionstudio.gef.editor.model.Light>
+        <de.bmotionstudio.gef.editor.model.Light>
+          <children/>
+          <observers>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+              <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                <setAttributeObjects>
+                  <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                    <type>#PREDICATE</type>
+                    <eval>this : GRN</eval>
+                    <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light[2]/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject/value"/>
+                    <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</attribute>
+                    <isExpressionMode>false</isExpressionMode>
+                  </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                </setAttributeObjects>
+              </de.bmotionstudio.gef.editor.observer.SetAttribute>
+            </entry>
+          </observers>
+          <events/>
+          <attributes>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                <value class="int">12</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                <value class="boolean">true</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                <value class="int">12</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                <value class="string">S2</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                <value class="string">control_34</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light[2]/attributes/entry[8]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+            </entry>
+          </attributes>
+          <sourceConnections reference="../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light[2]/sourceConnections"/>
+          <targetConnections reference="../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light[2]/targetConnections"/>
+        </de.bmotionstudio.gef.editor.model.Light>
+      </children>
+      <observers/>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeLabel</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+            <value class="string">Signal</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">S2</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.AttributeTrackDirection</string>
+          <de.bmotionstudio.gef.editor.attribute.AttributeTrackDirection>
+            <value class="int">0</value>
+          </de.bmotionstudio.gef.editor.attribute.AttributeTrackDirection>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">68</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.AttributeLights</string>
+          <de.bmotionstudio.gef.editor.attribute.AttributeLights>
+            <value class="int">2</value>
+          </de.bmotionstudio.gef.editor.attribute.AttributeLights>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">48</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">S2</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">161</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">32</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections reference="../../de.bmotionstudio.gef.editor.model.Signal/sourceConnections"/>
+      <targetConnections reference="../../de.bmotionstudio.gef.editor.model.Signal/targetConnections"/>
+    </de.bmotionstudio.gef.editor.model.Signal>
+    <de.bmotionstudio.gef.editor.model.Signal>
+      <children>
+        <de.bmotionstudio.gef.editor.model.Light>
+          <children/>
+          <observers>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+              <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                <setAttributeObjects>
+                  <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                    <type>#PREDICATE</type>
+                    <eval>this /: GRN</eval>
+                    <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject/value"/>
+                    <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</attribute>
+                    <isExpressionMode>false</isExpressionMode>
+                  </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                </setAttributeObjects>
+              </de.bmotionstudio.gef.editor.observer.SetAttribute>
+            </entry>
+          </observers>
+          <events/>
+          <attributes>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                <value class="int">12</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                <value class="boolean">true</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                <value class="de.bmotionstudio.gef.editor.attribute.BAttributeMisc">
+                  <value class="de.bmotionstudio.gef.editor.attribute.BAttributeMisc" reference=".."/>
+                </value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                <value class="int">12</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                <value class="string">S3</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                <value class="string">control_33</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                <value class="org.eclipse.swt.graphics.RGB">
+                  <red>192</red>
+                  <green>192</green>
+                  <blue>192</blue>
+                </value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+            </entry>
+          </attributes>
+          <sourceConnections reference="../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light/sourceConnections"/>
+          <targetConnections reference="../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light/targetConnections"/>
+        </de.bmotionstudio.gef.editor.model.Light>
+        <de.bmotionstudio.gef.editor.model.Light>
+          <children/>
+          <observers>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+              <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                <setAttributeObjects>
+                  <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                    <type>#PREDICATE</type>
+                    <eval>this : GRN</eval>
+                    <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light[2]/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject/value"/>
+                    <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</attribute>
+                    <isExpressionMode>false</isExpressionMode>
+                  </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                </setAttributeObjects>
+              </de.bmotionstudio.gef.editor.observer.SetAttribute>
+            </entry>
+          </observers>
+          <events/>
+          <attributes>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                <value class="int">12</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                <value class="boolean">true</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                <value class="int">12</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                <value class="string">S3</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                <value class="string">control_34</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light[2]/attributes/entry[8]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+            </entry>
+          </attributes>
+          <sourceConnections reference="../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light[2]/sourceConnections"/>
+          <targetConnections reference="../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light[2]/targetConnections"/>
+        </de.bmotionstudio.gef.editor.model.Light>
+      </children>
+      <observers/>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeLabel</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+            <value class="string">Signal</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">S3</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.AttributeTrackDirection</string>
+          <de.bmotionstudio.gef.editor.attribute.AttributeTrackDirection>
+            <value class="int">0</value>
+          </de.bmotionstudio.gef.editor.attribute.AttributeTrackDirection>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">68</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.AttributeLights</string>
+          <de.bmotionstudio.gef.editor.attribute.AttributeLights>
+            <value class="int">2</value>
+          </de.bmotionstudio.gef.editor.attribute.AttributeLights>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">48</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">S3</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">252</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">34</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections reference="../../de.bmotionstudio.gef.editor.model.Signal/sourceConnections"/>
+      <targetConnections reference="../../de.bmotionstudio.gef.editor.model.Signal/targetConnections"/>
+    </de.bmotionstudio.gef.editor.model.Signal>
+    <de.bmotionstudio.gef.editor.model.Signal>
+      <children>
+        <de.bmotionstudio.gef.editor.model.Light>
+          <children/>
+          <observers>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+              <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                <setAttributeObjects>
+                  <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                    <type>#PREDICATE</type>
+                    <eval>this /: GRN</eval>
+                    <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject/value"/>
+                    <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</attribute>
+                    <isExpressionMode>false</isExpressionMode>
+                  </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                </setAttributeObjects>
+              </de.bmotionstudio.gef.editor.observer.SetAttribute>
+            </entry>
+          </observers>
+          <events/>
+          <attributes>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                <value class="int">12</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                <value class="boolean">true</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                <value class="int">12</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                <value class="string">S4</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light/attributes/entry[8]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                <value class="string">control_33</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+            </entry>
+          </attributes>
+          <sourceConnections reference="../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light/sourceConnections"/>
+          <targetConnections reference="../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light/targetConnections"/>
+        </de.bmotionstudio.gef.editor.model.Light>
+        <de.bmotionstudio.gef.editor.model.Light>
+          <children/>
+          <observers>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+              <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                <setAttributeObjects>
+                  <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                    <type>#PREDICATE</type>
+                    <eval>this : GRN</eval>
+                    <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light[2]/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject/value"/>
+                    <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</attribute>
+                    <isExpressionMode>false</isExpressionMode>
+                  </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                </setAttributeObjects>
+              </de.bmotionstudio.gef.editor.observer.SetAttribute>
+            </entry>
+          </observers>
+          <events/>
+          <attributes>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                <value class="int">12</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                <value class="boolean">true</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                <value class="int">12</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                <value class="string">S4</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light[2]/attributes/entry[8]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                <value class="string">control_34</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+            </entry>
+          </attributes>
+          <sourceConnections reference="../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light[2]/sourceConnections"/>
+          <targetConnections reference="../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light[2]/targetConnections"/>
+        </de.bmotionstudio.gef.editor.model.Light>
+      </children>
+      <observers/>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeLabel</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+            <value class="string">Signal</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.AttributeTrackDirection</string>
+          <de.bmotionstudio.gef.editor.attribute.AttributeTrackDirection>
+            <value class="int">1</value>
+          </de.bmotionstudio.gef.editor.attribute.AttributeTrackDirection>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">S4</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">68</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="de.bmotionstudio.gef.editor.attribute.BAttributeMisc">
+              <value class="de.bmotionstudio.gef.editor.attribute.BAttributeMisc" reference=".."/>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.AttributeLights</string>
+          <de.bmotionstudio.gef.editor.attribute.AttributeLights>
+            <value class="int">2</value>
+          </de.bmotionstudio.gef.editor.attribute.AttributeLights>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">48</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">7</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">S4</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">759</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections reference="../../de.bmotionstudio.gef.editor.model.Signal/sourceConnections"/>
+      <targetConnections reference="../../de.bmotionstudio.gef.editor.model.Signal/targetConnections"/>
+    </de.bmotionstudio.gef.editor.model.Signal>
+    <de.bmotionstudio.gef.editor.model.Signal>
+      <children>
+        <de.bmotionstudio.gef.editor.model.Light>
+          <children/>
+          <observers>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+              <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                <setAttributeObjects>
+                  <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                    <type>#PREDICATE</type>
+                    <eval>this /: GRN</eval>
+                    <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject/value"/>
+                    <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</attribute>
+                    <isExpressionMode>false</isExpressionMode>
+                  </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                </setAttributeObjects>
+              </de.bmotionstudio.gef.editor.observer.SetAttribute>
+            </entry>
+          </observers>
+          <events/>
+          <attributes>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                <value class="int">12</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                <value class="boolean">true</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                <value class="int">12</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                <value class="string">S5</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                <value class="string">control_33</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light/attributes/entry[8]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+            </entry>
+          </attributes>
+          <sourceConnections reference="../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light/sourceConnections"/>
+          <targetConnections reference="../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light/targetConnections"/>
+        </de.bmotionstudio.gef.editor.model.Light>
+        <de.bmotionstudio.gef.editor.model.Light>
+          <children/>
+          <observers>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+              <de.bmotionstudio.gef.editor.observer.SetAttribute>
+                <setAttributeObjects>
+                  <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                    <type>#PREDICATE</type>
+                    <eval>this : GRN</eval>
+                    <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light[2]/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject/value"/>
+                    <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</attribute>
+                    <isExpressionMode>false</isExpressionMode>
+                  </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                </setAttributeObjects>
+              </de.bmotionstudio.gef.editor.observer.SetAttribute>
+            </entry>
+          </observers>
+          <events/>
+          <attributes>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+                <value class="int">12</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+                <value class="boolean">true</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+                <value class="string"></value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+                <value class="int">12</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+                <value class="string">S5</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+                <value class="int">0</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+                <value class="string">control_34</value>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light[2]/attributes/entry[8]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+              </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            </entry>
+            <entry>
+              <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+              <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+            </entry>
+          </attributes>
+          <sourceConnections reference="../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light[2]/sourceConnections"/>
+          <targetConnections reference="../../../../de.bmotionstudio.gef.editor.model.Signal/children/de.bmotionstudio.gef.editor.model.Light[2]/targetConnections"/>
+        </de.bmotionstudio.gef.editor.model.Light>
+      </children>
+      <observers/>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeLabel</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+            <value class="string">Signal</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeLabel>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">S5</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.AttributeTrackDirection</string>
+          <de.bmotionstudio.gef.editor.attribute.AttributeTrackDirection>
+            <value class="int">1</value>
+          </de.bmotionstudio.gef.editor.attribute.AttributeTrackDirection>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">68</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="de.bmotionstudio.gef.editor.attribute.BAttributeMisc">
+              <value class="de.bmotionstudio.gef.editor.attribute.BAttributeMisc" reference=".."/>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.AttributeLights</string>
+          <de.bmotionstudio.gef.editor.attribute.AttributeLights>
+            <value class="int">2</value>
+          </de.bmotionstudio.gef.editor.attribute.AttributeLights>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">48</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">S5</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">82</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">759</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections reference="../../de.bmotionstudio.gef.editor.model.Signal/sourceConnections"/>
+      <targetConnections reference="../../de.bmotionstudio.gef.editor.model.Signal/targetConnections"/>
+    </de.bmotionstudio.gef.editor.model.Signal>
+    <de.bmotionstudio.gef.editor.model.BButton>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate</string>
+          <de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+                <value class="boolean">true</value>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</attribute>
+                <isExpressionMode>false</isExpressionMode>
+                <operationName>FRONT_MOVE_1</operationName>
+                <predicate></predicate>
+                <random>false</random>
+                <maxrandom>1</maxrandom>
+              </de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+            </list>
+          </de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+        </entry>
+      </observers>
+      <events>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.event.OnClickEvent</string>
+          <de.bmotionstudio.gef.editor.scheduler.ExecuteOperationByPredicate>
+            <predicateOperation>
+              <isExpressionMode>false</isExpressionMode>
+              <operationName>FRONT_MOVE_1</operationName>
+              <predicate></predicate>
+              <random>false</random>
+              <maxrandom>1</maxrandom>
+            </predicateOperation>
+          </de.bmotionstudio.gef.editor.scheduler.ExecuteOperationByPredicate>
+        </entry>
+      </events>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+            <value class="boolean">false</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB">
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_126</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB">
+              <red>192</red>
+              <green>192</green>
+              <blue>192</blue>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">100</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="de.bmotionstudio.gef.editor.attribute.BAttributeMisc">
+              <value class="de.bmotionstudio.gef.editor.attribute.BAttributeMisc" reference=".."/>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">FrontMove1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">25</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">7</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">126</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BButton>
+    <de.bmotionstudio.gef.editor.model.BButton>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate</string>
+          <de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+                <value class="boolean">true</value>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</attribute>
+                <isExpressionMode>false</isExpressionMode>
+                <operationName>FRONT_MOVE_2</operationName>
+                <predicate></predicate>
+                <random>false</random>
+                <maxrandom>1</maxrandom>
+              </de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+            </list>
+          </de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+        </entry>
+      </observers>
+      <events>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.event.OnClickEvent</string>
+          <de.bmotionstudio.gef.editor.scheduler.ExecuteOperationByPredicate>
+            <predicateOperation>
+              <isExpressionMode>false</isExpressionMode>
+              <operationName>FRONT_MOVE_2</operationName>
+              <predicate></predicate>
+              <random>false</random>
+              <maxrandom>1</maxrandom>
+            </predicateOperation>
+          </de.bmotionstudio.gef.editor.scheduler.ExecuteOperationByPredicate>
+        </entry>
+      </events>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+            <value class="boolean">false</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton[9]/attributes/entry[3]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_127</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton[9]/attributes/entry[5]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">100</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="de.bmotionstudio.gef.editor.attribute.BAttributeMisc">
+              <value class="de.bmotionstudio.gef.editor.attribute.BAttributeMisc" reference=".."/>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">FrontMove2</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">25</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">36</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">126</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BButton>
+    <de.bmotionstudio.gef.editor.model.BButton>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate</string>
+          <de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+                <value class="boolean">true</value>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</attribute>
+                <isExpressionMode>false</isExpressionMode>
+                <operationName>BACK_MOVE_1</operationName>
+                <predicate></predicate>
+                <random>false</random>
+                <maxrandom>1</maxrandom>
+              </de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+            </list>
+          </de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+        </entry>
+      </observers>
+      <events>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.event.OnClickEvent</string>
+          <de.bmotionstudio.gef.editor.scheduler.ExecuteOperationByPredicate>
+            <predicateOperation>
+              <isExpressionMode>false</isExpressionMode>
+              <operationName>BACK_MOVE_1</operationName>
+              <predicate></predicate>
+              <random>false</random>
+              <maxrandom>1</maxrandom>
+            </predicateOperation>
+          </de.bmotionstudio.gef.editor.scheduler.ExecuteOperationByPredicate>
+        </entry>
+      </events>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+            <value class="boolean">false</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton[9]/attributes/entry[3]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_128</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton[9]/attributes/entry[5]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">100</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="de.bmotionstudio.gef.editor.attribute.BAttributeMisc">
+              <value class="de.bmotionstudio.gef.editor.attribute.BAttributeMisc" reference=".."/>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">BackMove1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">25</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">7</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">234</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BButton>
+    <de.bmotionstudio.gef.editor.model.BButton>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate</string>
+          <de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+                <value class="boolean">true</value>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</attribute>
+                <isExpressionMode>false</isExpressionMode>
+                <operationName>BACK_MOVE_2</operationName>
+                <predicate></predicate>
+                <random>false</random>
+                <maxrandom>1</maxrandom>
+              </de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+            </list>
+          </de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+        </entry>
+      </observers>
+      <events>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.event.OnClickEvent</string>
+          <de.bmotionstudio.gef.editor.scheduler.ExecuteOperationByPredicate>
+            <predicateOperation>
+              <isExpressionMode>false</isExpressionMode>
+              <operationName>BACK_MOVE_2</operationName>
+              <predicate></predicate>
+              <random>false</random>
+              <maxrandom>1</maxrandom>
+            </predicateOperation>
+          </de.bmotionstudio.gef.editor.scheduler.ExecuteOperationByPredicate>
+        </entry>
+      </events>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+            <value class="boolean">false</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton[9]/attributes/entry[3]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_129</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton[9]/attributes/entry[5]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">100</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="de.bmotionstudio.gef.editor.attribute.BAttributeMisc">
+              <value class="de.bmotionstudio.gef.editor.attribute.BAttributeMisc" reference=".."/>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">BackMove2</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">25</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">36</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">234</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BButton>
+    <de.bmotionstudio.gef.editor.model.BButton>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate</string>
+          <de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+            <list>
+              <de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+                <value class="boolean">true</value>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</attribute>
+                <isExpressionMode>false</isExpressionMode>
+                <operationName>route_freeing</operationName>
+                <predicate></predicate>
+                <random>false</random>
+                <maxrandom>1</maxrandom>
+              </de.bmotionstudio.gef.editor.scheduler.PredicateOperation>
+            </list>
+          </de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate>
+        </entry>
+      </observers>
+      <events>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.event.OnClickEvent</string>
+          <de.bmotionstudio.gef.editor.scheduler.ExecuteOperationByPredicate>
+            <predicateOperation>
+              <isExpressionMode>false</isExpressionMode>
+              <operationName>route_freeing</operationName>
+              <predicate></predicate>
+              <random>false</random>
+              <maxrandom>1</maxrandom>
+            </predicateOperation>
+          </de.bmotionstudio.gef.editor.scheduler.ExecuteOperationByPredicate>
+        </entry>
+      </events>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeEnabled</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+            <value class="boolean">false</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeEnabled>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton[9]/attributes/entry[3]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_130</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton[9]/attributes/entry[5]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">100</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="de.bmotionstudio.gef.editor.attribute.BAttributeMisc" reference="../../../../../de.bmotionstudio.gef.editor.model.BButton[12]/attributes/entry[7]/de.bmotionstudio.gef.editor.attribute.BAttributeMisc/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">Free Route</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">25</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">252</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">735</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BButton>
+    <de.bmotionstudio.gef.editor.model.BText>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+          <de.bmotionstudio.gef.editor.observer.SetAttribute>
+            <setAttributeObjects>
+              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                <type>#PREDICATE</type>
+                <eval>this:frm</eval>
+                <value class="org.eclipse.swt.graphics.RGB">
+                  <red>12</red>
+                  <green>131</green>
+                  <blue>46</blue>
+                </value>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</attribute>
+                <isExpressionMode>false</isExpressionMode>
+              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                <type>#PREDICATE</type>
+                <eval>this:resrt</eval>
+                <value class="org.eclipse.swt.graphics.RGB">
+                  <red>241</red>
+                  <green>240</green>
+                  <blue>243</blue>
+                </value>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</attribute>
+                <isExpressionMode>false</isExpressionMode>
+              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+            </setAttributeObjects>
+          </de.bmotionstudio.gef.editor.observer.SetAttribute>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.SimpleValueDisplay</string>
+          <de.bmotionstudio.gef.editor.observer.SimpleValueDisplay>
+            <eval>this</eval>
+            <replacementString>%1</replacementString>
+          </de.bmotionstudio.gef.editor.observer.SimpleValueDisplay>
+        </entry>
+      </observers>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeFont</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeFont>
+            <value class="string">1||9.75|0|WINDOWS|1|-13|0|0|0|400|0|0|0|0|0|0|0|0|</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeFont>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB">
+              <red>0</red>
+              <green>0</green>
+              <blue>0</blue>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_134</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB">
+              <red>255</red>
+              <green>255</green>
+              <blue>255</blue>
+            </value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">24</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">%1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">16</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">82</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">R1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">11</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BText>
+    <de.bmotionstudio.gef.editor.model.BText>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+          <de.bmotionstudio.gef.editor.observer.SetAttribute>
+            <setAttributeObjects>
+              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                <type>#PREDICATE</type>
+                <eval>this:frm</eval>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.BText[3]/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject/value"/>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</attribute>
+                <isExpressionMode>false</isExpressionMode>
+              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                <type>#PREDICATE</type>
+                <eval>this:resrt</eval>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.BText[3]/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject[2]/value"/>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</attribute>
+                <isExpressionMode>false</isExpressionMode>
+              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+            </setAttributeObjects>
+          </de.bmotionstudio.gef.editor.observer.SetAttribute>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.SimpleValueDisplay</string>
+          <de.bmotionstudio.gef.editor.observer.SimpleValueDisplay>
+            <eval>this</eval>
+            <replacementString>%1</replacementString>
+          </de.bmotionstudio.gef.editor.observer.SimpleValueDisplay>
+        </entry>
+      </observers>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeFont</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeFont>
+            <value class="string">1||9.75|0|WINDOWS|1|-13|0|0|0|400|0|0|0|0|0|0|0|0|</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeFont>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BText[3]/attributes/entry[3]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_135</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BText[3]/attributes/entry[5]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">24</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">%1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">16</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">101</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">R2</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">11</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BText>
+    <de.bmotionstudio.gef.editor.model.BText>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+          <de.bmotionstudio.gef.editor.observer.SetAttribute>
+            <setAttributeObjects>
+              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                <type>#PREDICATE</type>
+                <eval>this:frm</eval>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.BText[3]/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject/value"/>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</attribute>
+                <isExpressionMode>false</isExpressionMode>
+              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                <type>#PREDICATE</type>
+                <eval>this:resrt</eval>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.BText[3]/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject[2]/value"/>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</attribute>
+                <isExpressionMode>false</isExpressionMode>
+              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+            </setAttributeObjects>
+          </de.bmotionstudio.gef.editor.observer.SetAttribute>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.SimpleValueDisplay</string>
+          <de.bmotionstudio.gef.editor.observer.SimpleValueDisplay>
+            <eval>this</eval>
+            <replacementString>%1</replacementString>
+          </de.bmotionstudio.gef.editor.observer.SimpleValueDisplay>
+        </entry>
+      </observers>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeFont</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeFont>
+            <value class="string">1||9.75|0|WINDOWS|1|-13|0|0|0|400|0|0|0|0|0|0|0|0|</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeFont>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BText[3]/attributes/entry[3]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_136</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BText[3]/attributes/entry[5]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">24</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">%1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">16</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">180</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">R3</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">11</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BText>
+    <de.bmotionstudio.gef.editor.model.BText>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+          <de.bmotionstudio.gef.editor.observer.SetAttribute>
+            <setAttributeObjects>
+              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                <type>#PREDICATE</type>
+                <eval>this:frm</eval>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.BText[3]/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject/value"/>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</attribute>
+                <isExpressionMode>false</isExpressionMode>
+              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                <type>#PREDICATE</type>
+                <eval>this:resrt</eval>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.BText[3]/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject[2]/value"/>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</attribute>
+                <isExpressionMode>false</isExpressionMode>
+              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+            </setAttributeObjects>
+          </de.bmotionstudio.gef.editor.observer.SetAttribute>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.SimpleValueDisplay</string>
+          <de.bmotionstudio.gef.editor.observer.SimpleValueDisplay>
+            <eval>this</eval>
+            <replacementString>%1</replacementString>
+          </de.bmotionstudio.gef.editor.observer.SimpleValueDisplay>
+        </entry>
+      </observers>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeFont</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeFont>
+            <value class="string">1||9.75|0|WINDOWS|1|-13|0|0|0|400|0|0|0|0|0|0|0|0|</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeFont>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BText[3]/attributes/entry[3]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_137</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BText[3]/attributes/entry[5]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">24</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">%1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">16</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">266</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">R4</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">11</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BText>
+    <de.bmotionstudio.gef.editor.model.BText>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+          <de.bmotionstudio.gef.editor.observer.SetAttribute>
+            <setAttributeObjects>
+              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                <type>#PREDICATE</type>
+                <eval>this:frm</eval>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.BText[3]/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject/value"/>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</attribute>
+                <isExpressionMode>false</isExpressionMode>
+              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                <type>#PREDICATE</type>
+                <eval>this:resrt</eval>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.BText[3]/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject[2]/value"/>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</attribute>
+                <isExpressionMode>false</isExpressionMode>
+              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+            </setAttributeObjects>
+          </de.bmotionstudio.gef.editor.observer.SetAttribute>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.SimpleValueDisplay</string>
+          <de.bmotionstudio.gef.editor.observer.SimpleValueDisplay>
+            <eval>this</eval>
+            <replacementString>%1</replacementString>
+          </de.bmotionstudio.gef.editor.observer.SimpleValueDisplay>
+        </entry>
+      </observers>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeFont</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeFont>
+            <value class="string">1||9.75|0|WINDOWS|1|-13|0|0|0|400|0|0|0|0|0|0|0|0|</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeFont>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BText[3]/attributes/entry[3]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_138</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BText[3]/attributes/entry[5]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">24</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">%1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">16</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">12</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">R5</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">834</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BText>
+    <de.bmotionstudio.gef.editor.model.BText>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+          <de.bmotionstudio.gef.editor.observer.SetAttribute>
+            <setAttributeObjects>
+              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                <type>#PREDICATE</type>
+                <eval>this:frm</eval>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.BText[3]/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject/value"/>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</attribute>
+                <isExpressionMode>false</isExpressionMode>
+              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                <type>#PREDICATE</type>
+                <eval>this:resrt</eval>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.BText[3]/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject[2]/value"/>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</attribute>
+                <isExpressionMode>false</isExpressionMode>
+              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+            </setAttributeObjects>
+          </de.bmotionstudio.gef.editor.observer.SetAttribute>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.SimpleValueDisplay</string>
+          <de.bmotionstudio.gef.editor.observer.SimpleValueDisplay>
+            <eval>this</eval>
+            <replacementString>%1</replacementString>
+          </de.bmotionstudio.gef.editor.observer.SimpleValueDisplay>
+        </entry>
+      </observers>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeFont</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeFont>
+            <value class="string">1||9.75|0|WINDOWS|1|-13|0|0|0|400|0|0|0|0|0|0|0|0|</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeFont>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BText[3]/attributes/entry[3]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_139</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BText[3]/attributes/entry[5]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">24</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">%1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">16</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">75</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">R6</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">834</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BText>
+    <de.bmotionstudio.gef.editor.model.BText>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+          <de.bmotionstudio.gef.editor.observer.SetAttribute>
+            <setAttributeObjects>
+              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                <type>#PREDICATE</type>
+                <eval>this:frm</eval>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.BText[3]/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject/value"/>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</attribute>
+                <isExpressionMode>false</isExpressionMode>
+              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                <type>#PREDICATE</type>
+                <eval>this:resrt</eval>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.BText[3]/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject[2]/value"/>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</attribute>
+                <isExpressionMode>false</isExpressionMode>
+              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+            </setAttributeObjects>
+          </de.bmotionstudio.gef.editor.observer.SetAttribute>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.SimpleValueDisplay</string>
+          <de.bmotionstudio.gef.editor.observer.SimpleValueDisplay>
+            <eval>this</eval>
+            <replacementString>%1</replacementString>
+          </de.bmotionstudio.gef.editor.observer.SimpleValueDisplay>
+        </entry>
+      </observers>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeFont</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeFont>
+            <value class="string">1||9.75|0|WINDOWS|1|-13|0|0|0|400|0|0|0|0|0|0|0|0|</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeFont>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BText[3]/attributes/entry[3]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_140</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BText[3]/attributes/entry[5]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">24</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">%1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">16</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">94</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">R7</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">834</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BText>
+    <de.bmotionstudio.gef.editor.model.BText>
+      <children/>
+      <observers>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.SetAttribute</string>
+          <de.bmotionstudio.gef.editor.observer.SetAttribute>
+            <setAttributeObjects>
+              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                <type>#PREDICATE</type>
+                <eval>this:frm</eval>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.BText[3]/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject/value"/>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</attribute>
+                <isExpressionMode>false</isExpressionMode>
+              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+              <de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+                <type>#PREDICATE</type>
+                <eval>this:resrt</eval>
+                <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../../../de.bmotionstudio.gef.editor.model.BText[3]/observers/entry/de.bmotionstudio.gef.editor.observer.SetAttribute/setAttributeObjects/de.bmotionstudio.gef.editor.observer.SetAttributeObject[2]/value"/>
+                <attribute>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</attribute>
+                <isExpressionMode>false</isExpressionMode>
+              </de.bmotionstudio.gef.editor.observer.SetAttributeObject>
+            </setAttributeObjects>
+          </de.bmotionstudio.gef.editor.observer.SetAttribute>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.observer.SimpleValueDisplay</string>
+          <de.bmotionstudio.gef.editor.observer.SimpleValueDisplay>
+            <eval>this</eval>
+            <replacementString>%1</replacementString>
+          </de.bmotionstudio.gef.editor.observer.SimpleValueDisplay>
+        </entry>
+      </observers>
+      <events/>
+      <attributes>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeFont</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeFont>
+            <value class="string">1||9.75|0|WINDOWS|1|-13|0|0|0|400|0|0|0|0|0|0|0|0|</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeFont>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeTextColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BText[3]/attributes/entry[3]/de.bmotionstudio.gef.editor.attribute.BAttributeTextColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeTextColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+            <value class="string">control_141</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+            <value class="org.eclipse.swt.graphics.RGB" reference="../../../../../de.bmotionstudio.gef.editor.model.BText[3]/attributes/entry[5]/de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor/value"/>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+            <value class="int">24</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+            <value class="string"></value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible>
+            <value class="boolean">true</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeText</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeText>
+            <value class="string">%1</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeText>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+            <value class="int">16</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+            <value class="int">116</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+            <value class="string">R8</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+            <value class="int">834</value>
+          </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        </entry>
+        <entry>
+          <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+          <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+        </entry>
+      </attributes>
+      <sourceConnections/>
+      <targetConnections/>
+    </de.bmotionstudio.gef.editor.model.BText>
+  </children>
+  <observers/>
+  <events/>
+  <attributes>
+    <entry>
+      <string>de.bmotionstudio.gef.editor.attribute.BAttributeWidth</string>
+      <de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+        <value class="int">186</value>
+      </de.bmotionstudio.gef.editor.attribute.BAttributeWidth>
+    </entry>
+    <entry>
+      <string>de.bmotionstudio.gef.editor.attribute.BAttributeVisible</string>
+      <de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+        <value class="boolean">true</value>
+      </de.bmotionstudio.gef.editor.attribute.BAttributeVisible>
+    </entry>
+    <entry>
+      <string>de.bmotionstudio.gef.editor.attribute.BAttributeMisc</string>
+      <de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+        <value class="string"></value>
+      </de.bmotionstudio.gef.editor.attribute.BAttributeMisc>
+    </entry>
+    <entry>
+      <string>de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates</string>
+      <de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates/>
+    </entry>
+    <entry>
+      <string>de.bmotionstudio.gef.editor.attribute.BAttributeHeight</string>
+      <de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+        <value class="int">100</value>
+      </de.bmotionstudio.gef.editor.attribute.BAttributeHeight>
+    </entry>
+    <entry>
+      <string>de.bmotionstudio.gef.editor.attribute.BAttributeCustom</string>
+      <de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+        <value class="string"></value>
+      </de.bmotionstudio.gef.editor.attribute.BAttributeCustom>
+    </entry>
+    <entry>
+      <string>de.bmotionstudio.gef.editor.attribute.BAttributeY</string>
+      <de.bmotionstudio.gef.editor.attribute.BAttributeY>
+        <value class="int">100</value>
+      </de.bmotionstudio.gef.editor.attribute.BAttributeY>
+    </entry>
+    <entry>
+      <string>de.bmotionstudio.gef.editor.attribute.BAttributeX</string>
+      <de.bmotionstudio.gef.editor.attribute.BAttributeX>
+        <value class="int">100</value>
+      </de.bmotionstudio.gef.editor.attribute.BAttributeX>
+    </entry>
+    <entry>
+      <string>de.bmotionstudio.gef.editor.attribute.BAttributeID</string>
+      <de.bmotionstudio.gef.editor.attribute.BAttributeID>
+        <value class="string">visualization</value>
+      </de.bmotionstudio.gef.editor.attribute.BAttributeID>
+    </entry>
+    <entry>
+      <string>de.bmotionstudio.gef.editor.attribute.BAttributeSize</string>
+      <de.bmotionstudio.gef.editor.attribute.BAttributeSize/>
+    </entry>
+  </attributes>
+  <sourceConnections/>
+  <targetConnections/>
+  <bmachine>train_4.bum</bmachine>
+  <language>EventB</language>
+  <version>5.2.0</version>
+  <leftRuler>
+    <unit>2</unit>
+    <horizontal>false</horizontal>
+    <guides/>
+  </leftRuler>
+  <topRuler>
+    <unit>2</unit>
+    <horizontal>true</horizontal>
+    <guides/>
+  </topRuler>
+  <rulersVisibility>true</rulersVisibility>
+  <snapToGeometry>true</snapToGeometry>
+  <gridEnabled>false</gridEnabled>
+</visualization>
\ No newline at end of file
diff --git a/Train_B_Book/train_4.bpo b/Train_B_Book/train_4.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..a66681d42db2add28442ccf513aef908719ba491
--- /dev/null
+++ b/Train_B_Book/train_4.bpo
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="1">
+    <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="1">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTET" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEU" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEV" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEW" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEX" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEY" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEZ" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="ROUTE[" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+        <org.eventb.core.poPredicate name="ROUTE\" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poPredicate name="ROUTE]" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poPredicate name="ROUTE^" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poPredicate name="ROUTE_" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poPredicate name="ROUTE`" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+        <org.eventb.core.poIdentifier name="S" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.poIdentifier name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        <org.eventb.core.poPredicate name="ROUTEa" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poIdentifier name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTEb" org.eventb.core.predicate="blpt⊆BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEc" org.eventb.core.predicate="lft∈blpt → BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEd" org.eventb.core.predicate="rht∈blpt → BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEe" org.eventb.core.predicate="lft∩rht=(∅ ⦂ ℙ(BLOCKS×BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEf" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEg" org.eventb.core.predicate="blpt∩ran(fst)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEh" org.eventb.core.predicate="blpt∩ran(lst)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poIdentifier name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="J" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="K" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="L" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="M" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="N" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="R10" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R2" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R3" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R4" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R5" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R6" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R7" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R8" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R9" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poPredicate name="ROUTEi" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEj" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAYdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEk" org.eventb.core.predicate="rtbl={b⦂BLOCKS,r⦂ROUTES·r∈dom(nxt)∧(b∈dom(nxt(r))∨b∈ran(nxt(r))) ∣ b ↦ r}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_tx3w0YdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poPredicate name="ROUTEl" org.eventb.core.predicate="nxt={R1 ↦ {L ↦ A,A ↦ B,B ↦ C},R2 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ E,E ↦ F,F ↦ G},R3 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ K,K ↦ J,J ↦ N},R4 ↦ {M ↦ H,H ↦ I,I ↦ K,K ↦ F,F ↦ G},R5 ↦ {M ↦ H,H ↦ I,I ↦ J,J ↦ N},R6 ↦ {C ↦ B,B ↦ A,A ↦ L},R7 ↦ {G ↦ F,F ↦ E,E ↦ D,D ↦ B,B ↦ A,A ↦ L},R8 ↦ {N ↦ J,J ↦ K,K ↦ D,D ↦ B,B ↦ A,A ↦ L},R9 ↦ {G ↦ F,F ↦ K,K ↦ I,I ↦ H,H ↦ M},R10 ↦ {N ↦ J,J ↦ I,I ↦ H,H ↦ M}}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LA4doEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEm" org.eventb.core.predicate="fst={R1 ↦ L,R2 ↦ L,R3 ↦ L,R4 ↦ M,R5 ↦ M,R6 ↦ C,R7 ↦ G,R8 ↦ N,R9 ↦ G,R10 ↦ N}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LBIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEn" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ G,R3 ↦ N,R4 ↦ G,R5 ↦ N,R6 ↦ L,R7 ↦ L,R8 ↦ L,R9 ↦ M,R10 ↦ M}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5yEIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poIdentifier name="S1" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S2" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S3" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S4" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S5" org.eventb.core.type="S"/>
+        <org.eventb.core.poPredicate name="ROUTEo" org.eventb.core.predicate="card(S)=5" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5SfUU4drEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poPredicate name="ROUTEp" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5Sf7YIdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poPredicate name="ROUTEq" org.eventb.core.predicate="SIG={L ↦ S1,M ↦ S2,N ↦ S3,C ↦ S4,G ↦ S5}" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5Sf7YYdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poPredicate name="ROUTEr" org.eventb.core.predicate="blpt={B,D,F,I,J}" org.eventb.core.source="/Train/train_ctx2_beebook.buc|org.eventb.core.contextFile#train_ctx2_beebook|org.eventb.core.axiom#_MRgjEodsEeOYLZrGGNvfWA"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="1">
+        <org.eventb.core.poIdentifier name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="GRN" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.poIdentifier name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poPredicate name="rsrtbm" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I"/>
+        <org.eventb.core.poPredicate name="rsrtbn" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I"/>
+        <org.eventb.core.poPredicate name="rsrtbo" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I"/>
+        <org.eventb.core.poPredicate name="rsrtbp" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I"/>
+        <org.eventb.core.poPredicate name="rsrtbq" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poPredicate name="rsrtbr" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtbs" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtbt" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtbu" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtbv" org.eventb.core.predicate="frm⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtbw" org.eventb.core.predicate="rsrtbl[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtbx" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poPredicate name="rsrtby" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I"/>
+        <org.eventb.core.poPredicate name="rsrtbz" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poPredicate name="rsrtb{" org.eventb.core.predicate="LBT⊆OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I"/>
+        <org.eventb.core.poPredicate name="rsrtb|" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poPredicate name="rsrtb}" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T"/>
+        <org.eventb.core.poPredicate name="rsrtb~" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K"/>
+        <org.eventb.core.poPredicate name="rsrtc'" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L"/>
+        <org.eventb.core.poPredicate name="rsrtc(" org.eventb.core.predicate="rdy⊆frm" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_refinesMachine3"/>
+        <org.eventb.core.poPredicate name="rsrtc)" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtc*" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtc+" org.eventb.core.predicate="GRN⊆S" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtc," org.eventb.core.predicate="SIG[fst[rdy]]=GRN" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtc-" org.eventb.core.predicate="rdy ◁ fst∈rdy ↣ BLOCKS" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element1T"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="INITIALISATION/inv1/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  establishment" org.eventb.core.poStamp="1">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx2_beeboom"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="(lft∪rht)∩((∅ ⦂ ℙ(BLOCKS×BLOCKS))∪(∅ ⦂ ℙ(BLOCKS×BLOCKS))∼)∈blpt ⇸ BLOCKS" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_evt1"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poSelHintSnd="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poSequent#INITIALISATION\/inv1\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD0"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx2_beeboom" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="TRK'" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="GRN'" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx2_beeboom" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx2_beeboom" org.eventb.core.poStamp="0"/>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx2_beeboon" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx2_beeboon" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx2_beeboon" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx2_beebooo" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx2_beebooo" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx2_beebooo" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx2_beeboop" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="GRN'" org.eventb.core.type="ℙ(S)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx2_beeboop" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx2_beeboop" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈dom(SIG)" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="SIG(b)∈GRN" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx2_beebooq" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx2_beebooq" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx2_beebooq" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx2_beeboor" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx2_beeboor" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx2_beeboor" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∉dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx2_beeboos" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx2_beeboos" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx2_beeboos" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="TRK(b)∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="point_positionning/inv1/INV" org.eventb.core.accurate="true" org.eventb.core.poDesc="Invariant  preservation" org.eventb.core.poStamp="1">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#EVTALLHYPtrain_ctx2_beeboot"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="(lft∪rht)∩(((dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r))∪((dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r))∼)∈blpt ⇸ BLOCKS" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="ABSTRACT" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element7"/>
+        <org.eventb.core.poSource name="SEQHYS" org.eventb.core.poRole="CONCRETE" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_element7"/>
+        <org.eventb.core.poSource name="SEQHYT" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poSelHint name="SEQHYU" org.eventb.core.poSelHintFst="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poSelHintSnd="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poSequent#point_positionning\/inv1\/INV|org.eventb.core.poPredicateSet#SEQHYP"/>
+        <org.eventb.core.poSelHint name="SEQHYV" org.eventb.core.poSelHintFst="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#ALLHYP|org.eventb.core.poPredicate#PRD0"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx2_beeboot" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="TRK'" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx2_beeboot" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx2_beeboot" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx2_beeboou" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="GRN'" org.eventb.core.type="ℙ(S)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx2_beeboou" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx2_beeboou" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.guard#("/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.guard#)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_4.bpo|org.eventb.core.poFile#train_4|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="1">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="(lft∪rht)∩(TRK∪TRK∼)∈blpt ⇸ BLOCKS" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.invariant#internal_element1I"/>
+    </org.eventb.core.poPredicateSet>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_4.bpr b/Train_B_Book/train_4.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..68512dbb2b7216cfed09efe56683a57ced16e686
--- /dev/null
+++ b/Train_B_Book/train_4.bpr
@@ -0,0 +1,8472 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.prFile version="1">
+<org.eventb.core.prProof name="inv1/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41" org.eventb.core.prSets="B,R,S">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="auto rewrite" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p46">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p42"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p43"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p18"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p44"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p31"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p45"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p34"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.allI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p47">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.impI" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p48">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p50">
+<org.eventb.core.prRule name="com.b4free.rodin.core.externalML" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p27,p22,p33,p7,p39,p8,p21,p3,p6,p15,p11,p25,p29,p16,p36,p19,p2,p37,p5,p10,p28,p4,p20,p9,p14,p24,p17,p23,p35,p13,p12,p26,p30,p41,p1,p32,p40,p42,p43,p44,p45,p48">
+<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:2000"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p51">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.isFunGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p7"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="SIG" org.eventb.core.type="ℙ(B×S)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(B×B)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="frm" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(B×B)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(R×B)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(R×ℙ(B×B))"/>
+<org.eventb.core.prIdent name="rdy" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(B)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(R)"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(B×B)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(B×R)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(B×R)"/>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="SIG[fst[rdy]]=GRN"/>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]"/>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="lst∈R → B"/>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="frm⊆resrt"/>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂R·r∈R⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="rht∈blpt → B"/>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="resrt⊆R"/>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC"/>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀x⦂B,y⦂B·x ↦ y∈TRK⇒(∃r⦂R·r∈R∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="rsrtbl[OCC]⊆frm"/>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="blpt⊆B"/>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)"/>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="lft∈blpt → B"/>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀b⦂B·b∈OCC∧b∈dom(TRK)⇒(nxt(rsrtbl(b)))(b)=TRK(b)"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀r⦂R·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK"/>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="r∈dom(nxt)">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="lft∩rht=(∅ ⦂ ℙ(B×B))"/>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="rsrtbl∈resbl → resrt"/>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="fst∈R → B"/>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="resbl⊆B"/>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="lst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="rsrtbl⊆rtbl"/>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂R·r∈R⇒(∀S⦂ℙ(B)·S⊆B∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(B)))"/>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="nxt∈R → (B ⤔ B)"/>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="TRK∈B ⤔ B"/>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="OCC⊆resbl"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="LBT⊆OCC"/>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="rdy⊆frm"/>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀r⦂R·r∈R⇒¬fst(r)=lst(r)"/>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="nxt∈R ⇸ ℙ(B × B)"/>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂R·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)"/>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="fst∼⊆rtbl"/>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="dom(rtbl)=B"/>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="rtbl∈B ↔ R"/>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="r∈R">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂R·r∈R⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂R·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(B))"/>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="ran(rtbl)=R"/>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀a⦂B,b⦂B·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)"/>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂R·r∈R⇒fst(r)≠lst(r)"/>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="rdy ◁ fst∈rdy ↣ B"/>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂R,s⦂R·r∈R∧s∈R∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂R·r∈R⇒r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)∧r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)"/>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="GRN⊆S"/>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="r∈dom(nxt)∧nxt∈R ⇸ ℙ(B × B)">
+<org.eventb.core.prIdent name="r" org.eventb.core.type="R"/>
+</org.eventb.core.prPred>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="point_positionning/inv1/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="BLOCKS" org.eventb.core.psManual="true">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p3"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p5"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p8"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p7"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p10,p11"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p9"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p12"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p15"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p16"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p18"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p20"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p21"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p24"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p23"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p25"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p26"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p28"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p27"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p30"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p29"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p32"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p31"/>
+<org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p34"/>
+<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p33"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p35"/>
+<org.eventb.core.prHypAction name="FORWARD_INF21" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p36"/>
+<org.eventb.core.prHypAction name="HIDE22" org.eventb.core.prHyps="p2"/>
+<org.eventb.core.prHypAction name="FORWARD_INF23" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p37"/>
+<org.eventb.core.prHypAction name="HIDE24" org.eventb.core.prHyps="p4"/>
+<org.eventb.core.prHypAction name="FORWARD_INF25" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p38"/>
+<org.eventb.core.prHypAction name="HIDE26" org.eventb.core.prHyps="p6"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p39"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p40"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p19"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p41"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p22"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p42"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p24"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p43"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p28"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p44"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p30"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p45"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p32"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p46"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p34"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p47"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p36"/>
+<org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p48"/>
+<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p37"/>
+<org.eventb.core.prHypAction name="FORWARD_INF20" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p49"/>
+<org.eventb.core.prHypAction name="HIDE21" org.eventb.core.prHyps="p38"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(lft∪rht)∩(((dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r))∪((dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r))∼)∈blpt ⇸ BLOCKS"/>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="GRN⊆S">
+<org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+<org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="blpt⊆BLOCKS"/>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·b∈blpt∧r∈ROUTES∧b ↦ r∈rtbl⇒nxt(r)(b)∈{lft(b),rht(b)}∨(nxt(r))∼(b)∈{lft(b),rht(b)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="lft={B ↦ C,G ↦ I,E ↦ G}">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·b∈blpt∧⊤∧b ↦ r∈rtbl⇒nxt(r)(b)∈{lft(b),rht(b)}∨(nxt(r))∼(b)∈{lft(b),rht(b)}">
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS"/>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·b∈blpt∧b ↦ r∈rtbl⇒nxt(r)(b)∈{lft(b),rht(b)}∨(nxt(r))∼(b)∈{lft(b),rht(b)}">
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="rht={B ↦ D,G ↦ H,E ↦ D}">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="(lft∪rht)∩((dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r)∪((dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r))∼)∈blpt ⇸ BLOCKS"/>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="lft={B ↦ C,G ↦ I,E ↦ G}∧rht={B ↦ D,G ↦ H,E ↦ D}">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))"/>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewrites:4"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="INITIALISATION/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="BLOCKS" org.eventb.core.psManual="true">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ProB (no enumeration / all cases checked)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(lft∪rht)∩((∅ ⦂ ℙ(BLOCKS×BLOCKS))∪(∅ ⦂ ℙ(BLOCKS×BLOCKS))∼)∈blpt ⇸ BLOCKS"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="de.prob.eventb.disprover.core.disproverReasoner"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_formation/grd1/GRD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p93"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p140" org.eventb.core.prInfHyps="p141"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p140"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p143"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p142"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p144" org.eventb.core.prInfHyps="p145"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p144"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p147"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p146"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p148"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p149" org.eventb.core.prInfHyps="p150"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p149"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p151" org.eventb.core.prInfHyps="p152"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p151"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p153"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p154" org.eventb.core.prInfHyps="p155"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p154"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p156"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p157"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p158" org.eventb.core.prInfHyps="p159"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p158"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p160" org.eventb.core.prInfHyps="p161"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p160"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p162" org.eventb.core.prInfHyps="p163"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p162"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p164" org.eventb.core.prInfHyps="p165"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p164"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p166"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p141" org.eventb.core.prInfHyps="p167"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p141"/>
+<org.eventb.core.prHypAction name="FORWARD_INF21" org.eventb.core.prHyps="p143" org.eventb.core.prInfHyps="p168"/>
+<org.eventb.core.prHypAction name="HIDE22" org.eventb.core.prHyps="p143"/>
+<org.eventb.core.prHypAction name="FORWARD_INF23" org.eventb.core.prHyps="p145" org.eventb.core.prInfHyps="p169"/>
+<org.eventb.core.prHypAction name="HIDE24" org.eventb.core.prHyps="p145"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p170"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p150"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p152" org.eventb.core.prInfHyps="p171"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p152"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p155" org.eventb.core.prInfHyps="p172"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p155"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p159" org.eventb.core.prInfHyps="p173"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p159"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p161" org.eventb.core.prInfHyps="p174"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p161"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p163" org.eventb.core.prInfHyps="p175"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p163"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p165" org.eventb.core.prInfHyps="p176"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p165"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p167" org.eventb.core.prInfHyps="p177"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p167"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p168" org.eventb.core.prInfHyps="p178"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p168"/>
+<org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p169" org.eventb.core.prInfHyps="p179"/>
+<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p169"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prPred name="p161" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬I=K">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬K=M">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p153" org.eventb.core.predicate="blpt⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R7=R9">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p165" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=N">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=J">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p159" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p150" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=L">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=J">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R8=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=J">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬L=M">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=L">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p155" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=K">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=M">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=N">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬J=K">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p178" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p163" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=L">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R9">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=K">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬K=L">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=N">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=L">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R9">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p176" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R9">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=M">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=K">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬M=N">
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p140" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬I=J">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p164" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p172" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=L">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=L">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=K">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p167" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R9=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R10">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=L">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p162" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p173" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p168" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p148" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=L">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=M">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬H=J">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p175" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p157" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=L">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=N">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p145" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=N">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=N">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=M">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p149" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R8=R9">
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R9">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬L=N">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=N">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p170" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=M">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p158" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R9">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=M">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p169" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=M">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=J">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R9">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p171" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=K">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=J">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=N">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p177" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p160" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p154" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=M">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=K">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=J">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=K">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬J=L">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=M">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p156" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=J">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=M">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p146" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=N">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=N">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p179" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=K">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=N">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p174" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p166" org.eventb.core.predicate="GRN⊆S">
+<org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+<org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_formation/grd2/GRD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p93"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p140" org.eventb.core.prInfHyps="p141"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p140"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p143"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p142"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p144" org.eventb.core.prInfHyps="p145"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p144"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p147"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p146"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p148"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p149" org.eventb.core.prInfHyps="p150"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p149"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p151" org.eventb.core.prInfHyps="p152"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p151"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p153"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p154" org.eventb.core.prInfHyps="p155"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p154"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p156"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p157"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p158" org.eventb.core.prInfHyps="p159"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p158"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p160" org.eventb.core.prInfHyps="p161"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p160"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p162" org.eventb.core.prInfHyps="p163"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p162"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p164" org.eventb.core.prInfHyps="p165"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p164"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p166"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p141" org.eventb.core.prInfHyps="p167"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p141"/>
+<org.eventb.core.prHypAction name="FORWARD_INF21" org.eventb.core.prHyps="p143" org.eventb.core.prInfHyps="p168"/>
+<org.eventb.core.prHypAction name="HIDE22" org.eventb.core.prHyps="p143"/>
+<org.eventb.core.prHypAction name="FORWARD_INF23" org.eventb.core.prHyps="p145" org.eventb.core.prInfHyps="p169"/>
+<org.eventb.core.prHypAction name="HIDE24" org.eventb.core.prHyps="p145"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p170"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p150"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p152" org.eventb.core.prInfHyps="p171"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p152"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p155" org.eventb.core.prInfHyps="p172"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p155"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p159" org.eventb.core.prInfHyps="p173"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p159"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p161" org.eventb.core.prInfHyps="p174"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p161"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p163" org.eventb.core.prInfHyps="p175"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p163"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p165" org.eventb.core.prInfHyps="p176"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p165"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p167" org.eventb.core.prInfHyps="p177"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p167"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p168" org.eventb.core.prInfHyps="p178"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p168"/>
+<org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p169" org.eventb.core.prInfHyps="p179"/>
+<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p169"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prPred name="p161" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬I=K">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬K=M">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p153" org.eventb.core.predicate="blpt⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R7=R9">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p165" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=N">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=J">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p159" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p150" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=L">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=J">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R8=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=J">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬L=M">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=L">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p155" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=K">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=M">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=N">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬J=K">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p178" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p163" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=L">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R9">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=K">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬K=L">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=N">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=L">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R9">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p176" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R9">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=M">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=K">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬M=N">
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p140" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬I=J">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p164" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p172" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=L">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=L">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=K">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p167" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R9=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R10">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=L">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p162" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p173" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p168" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p148" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=L">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=M">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬H=J">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p175" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p157" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=L">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=N">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p145" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=N">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=N">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=M">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p149" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R8=R9">
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R9">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬L=N">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=N">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p170" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=M">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p158" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R9">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=M">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p169" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=M">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=J">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R9">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p171" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=K">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=J">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=N">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p177" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p160" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p154" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=M">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=K">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=J">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=K">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬J=L">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=M">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p156" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=J">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=M">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p146" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=N">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=N">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p179" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=K">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=N">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p174" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p166" org.eventb.core.predicate="GRN⊆S">
+<org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+<org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_formation/act1/SIM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p93"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p140" org.eventb.core.prInfHyps="p141"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p140"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p143"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p142"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p144" org.eventb.core.prInfHyps="p145"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p144"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p147"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p146"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p148"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p149" org.eventb.core.prInfHyps="p150"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p149"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p151" org.eventb.core.prInfHyps="p152"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p151"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p153"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p154" org.eventb.core.prInfHyps="p155"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p154"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p156"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p157"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p158" org.eventb.core.prInfHyps="p159"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p158"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p160" org.eventb.core.prInfHyps="p161"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p160"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p162" org.eventb.core.prInfHyps="p163"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p162"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p164" org.eventb.core.prInfHyps="p165"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p164"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p166"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p141" org.eventb.core.prInfHyps="p167"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p141"/>
+<org.eventb.core.prHypAction name="FORWARD_INF21" org.eventb.core.prHyps="p143" org.eventb.core.prInfHyps="p168"/>
+<org.eventb.core.prHypAction name="HIDE22" org.eventb.core.prHyps="p143"/>
+<org.eventb.core.prHypAction name="FORWARD_INF23" org.eventb.core.prHyps="p145" org.eventb.core.prInfHyps="p169"/>
+<org.eventb.core.prHypAction name="HIDE24" org.eventb.core.prHyps="p145"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p170"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p150"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p152" org.eventb.core.prInfHyps="p171"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p152"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p155" org.eventb.core.prInfHyps="p172"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p155"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p159" org.eventb.core.prInfHyps="p173"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p159"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p161" org.eventb.core.prInfHyps="p174"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p161"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p163" org.eventb.core.prInfHyps="p175"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p163"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p165" org.eventb.core.prInfHyps="p176"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p165"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p167" org.eventb.core.prInfHyps="p177"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p167"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p168" org.eventb.core.prInfHyps="p178"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p168"/>
+<org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p169" org.eventb.core.prInfHyps="p179"/>
+<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p169"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prPred name="p161" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬I=K">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬K=M">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p153" org.eventb.core.predicate="blpt⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R7=R9">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p165" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=N">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=J">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p159" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p150" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=L">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=J">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R8=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=J">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬L=M">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=L">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p155" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=K">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=M">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=N">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬J=K">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p178" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p163" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=L">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R9">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=K">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬K=L">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=N">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=L">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R9">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p176" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R9">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=M">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=K">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬M=N">
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p140" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬I=J">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p164" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p172" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=L">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=L">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=K">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p167" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R9=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R10">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=L">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p162" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p173" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p168" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p148" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=L">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=M">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬H=J">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p175" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p157" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=L">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=N">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p145" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=N">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=N">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=M">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p149" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R8=R9">
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R9">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬L=N">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=N">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p170" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=M">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p158" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R9">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=M">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p169" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=M">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=J">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R9">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p171" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=K">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=J">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=N">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p177" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p160" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p154" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=M">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=K">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=J">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=K">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬J=L">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=M">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p156" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=J">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=M">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p146" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=N">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=N">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p179" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=K">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=N">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p174" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p166" org.eventb.core.predicate="GRN⊆S">
+<org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+<org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_formation/act2/SIM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p93"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p140" org.eventb.core.prInfHyps="p141"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p140"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p143"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p142"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p144" org.eventb.core.prInfHyps="p145"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p144"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p147"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p146"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p148"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p149" org.eventb.core.prInfHyps="p150"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p149"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p151" org.eventb.core.prInfHyps="p152"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p151"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p153"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p154" org.eventb.core.prInfHyps="p155"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p154"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p156"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p157"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p158" org.eventb.core.prInfHyps="p159"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p158"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p160" org.eventb.core.prInfHyps="p161"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p160"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p162" org.eventb.core.prInfHyps="p163"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p162"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p164" org.eventb.core.prInfHyps="p165"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p164"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p166"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p141" org.eventb.core.prInfHyps="p167"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p141"/>
+<org.eventb.core.prHypAction name="FORWARD_INF21" org.eventb.core.prHyps="p143" org.eventb.core.prInfHyps="p168"/>
+<org.eventb.core.prHypAction name="HIDE22" org.eventb.core.prHyps="p143"/>
+<org.eventb.core.prHypAction name="FORWARD_INF23" org.eventb.core.prHyps="p145" org.eventb.core.prInfHyps="p169"/>
+<org.eventb.core.prHypAction name="HIDE24" org.eventb.core.prHyps="p145"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p170"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p150"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p152" org.eventb.core.prInfHyps="p171"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p152"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p155" org.eventb.core.prInfHyps="p172"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p155"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p159" org.eventb.core.prInfHyps="p173"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p159"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p161" org.eventb.core.prInfHyps="p174"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p161"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p163" org.eventb.core.prInfHyps="p175"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p163"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p165" org.eventb.core.prInfHyps="p176"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p165"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p167" org.eventb.core.prInfHyps="p177"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p167"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p168" org.eventb.core.prInfHyps="p178"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p168"/>
+<org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p169" org.eventb.core.prInfHyps="p179"/>
+<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p169"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prPred name="p161" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬I=K">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬K=M">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p153" org.eventb.core.predicate="blpt⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R7=R9">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p165" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=N">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=J">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p159" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p150" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=L">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=J">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R8=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=J">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬L=M">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=L">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p155" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=K">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=M">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=N">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬J=K">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p178" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p163" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=L">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R9">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=K">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬K=L">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=N">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=L">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R9">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p176" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R9">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=M">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=K">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬M=N">
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p140" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬I=J">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p164" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p172" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=L">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=L">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=K">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p167" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R9=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R10">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=L">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p162" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p173" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p168" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p148" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=L">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=M">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬H=J">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p175" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p157" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=L">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=N">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p145" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=N">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=N">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=M">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p149" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R8=R9">
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R9">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬L=N">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=N">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p170" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=M">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p158" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R9">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=M">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p169" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=M">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=J">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R9">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p171" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=K">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=J">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=N">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p177" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p160" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p154" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=M">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=K">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=J">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=K">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬J=L">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=M">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p156" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=J">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=M">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p146" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=N">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=N">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p179" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=K">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=N">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p174" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p166" org.eventb.core.predicate="GRN⊆S">
+<org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+<org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_formation/grd2/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS,ROUTES">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139,p140"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139,p140"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p141" org.eventb.core.prInfHyps="p142"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p141"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p143" org.eventb.core.prInfHyps="p144"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p143"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p145" org.eventb.core.prInfHyps="p146"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p145"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p147" org.eventb.core.prInfHyps="p148"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p147"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p149"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p151"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p150"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p152" org.eventb.core.prInfHyps="p153"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p152"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p154"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p155" org.eventb.core.prInfHyps="p156"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p155"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p157"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p158"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p159" org.eventb.core.prInfHyps="p160"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p159"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p161" org.eventb.core.prInfHyps="p162"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p161"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p163" org.eventb.core.prInfHyps="p164"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p163"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p165" org.eventb.core.prInfHyps="p166"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p165"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p167"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p168"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p142"/>
+<org.eventb.core.prHypAction name="FORWARD_INF21" org.eventb.core.prHyps="p144" org.eventb.core.prInfHyps="p169"/>
+<org.eventb.core.prHypAction name="HIDE22" org.eventb.core.prHyps="p144"/>
+<org.eventb.core.prHypAction name="FORWARD_INF23" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p170"/>
+<org.eventb.core.prHypAction name="HIDE24" org.eventb.core.prHyps="p146"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p151" org.eventb.core.prInfHyps="p171"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p151"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p153" org.eventb.core.prInfHyps="p172"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p153"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p156" org.eventb.core.prInfHyps="p173"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p156"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p160" org.eventb.core.prInfHyps="p174"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p160"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p162" org.eventb.core.prInfHyps="p175"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p162"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p164" org.eventb.core.prInfHyps="p176"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p164"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p166" org.eventb.core.prInfHyps="p177"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p166"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p168" org.eventb.core.prInfHyps="p178"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p168"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p169" org.eventb.core.prInfHyps="p179"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p169"/>
+<org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p170" org.eventb.core.prInfHyps="p180"/>
+<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p170"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N})" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p181">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps=""/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10})" org.eventb.core.prGoal="p181" org.eventb.core.prHyps="p95">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p182">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps=""/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p182" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p183"/>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p184"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p95"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p3"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prPred name="p162" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=D"/>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=F"/>
+<org.eventb.core.prPred name="p181" org.eventb.core.predicate="r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ({A,B,C,D,E,F,G,H,I,J,K,L,M,N} × {A,B,C,D,E,F,G,H,I,J,K,L,M,N})"/>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=K"/>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬K=M"/>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=H"/>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R6"/>
+<org.eventb.core.prPred name="p154" org.eventb.core.predicate="blpt⊆BLOCKS">
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R9"/>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=B"/>
+<org.eventb.core.prPred name="p166" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬D=N"/>
+<org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R5"/>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=J"/>
+<org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p160" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=L"/>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=J"/>
+<org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R8=R10"/>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R4"/>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=F"/>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=J"/>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬L=M"/>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R2=R10"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=L"/>
+<org.eventb.core.prPred name="p156" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R7"/>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=K"/>
+<org.eventb.core.prPred name="p183" org.eventb.core.predicate="r∈dom(nxt)"/>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=C"/>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=G"/>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬H=M"/>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬F=N"/>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=K"/>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=I"/>
+<org.eventb.core.prPred name="p179" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p164" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=L"/>
+<org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R9"/>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R6"/>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=D"/>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=K"/>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=G"/>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=L"/>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=I"/>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬I=N"/>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R8"/>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=L"/>
+<org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R9"/>
+<org.eventb.core.prPred name="p177" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R9"/>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R2=R3"/>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R5"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬B=M"/>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=K"/>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}"/>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬R1=R2"/>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="¬M=N"/>
+<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R7"/>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}"/>
+<org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R7=R10"/>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=F"/>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=I"/>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R3=R10"/>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=J"/>
+<org.eventb.core.prPred name="p165" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=I"/>
+<org.eventb.core.prPred name="p173" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R4=R5"/>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=L"/>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=L"/>
+<org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R8"/>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R4"/>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})"/>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R8"/>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=I"/>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=K"/>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=H"/>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=H"/>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=C"/>
+<org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p168" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p140" org.eventb.core.predicate="¬R9=R10"/>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R1=R10"/>
+<org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R7"/>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=G"/>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=L"/>
+<org.eventb.core.prPred name="p163" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R5=R6"/>
+<org.eventb.core.prPred name="p174" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p169" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p149" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=L"/>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R7"/>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬E=M"/>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=H"/>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=J"/>
+<org.eventb.core.prPred name="p176" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=D"/>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=G"/>
+<org.eventb.core.prPred name="p158" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=L"/>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬E=N"/>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=G"/>
+<org.eventb.core.prPred name="p146" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R6=R7"/>
+<org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R5=R10"/>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬G=N"/>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬B=N"/>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬A=M"/>
+<org.eventb.core.prPred name="p150" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+<org.eventb.core.prPred name="p148" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R8=R9"/>
+<org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R9"/>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="¬L=N"/>
+<org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R8"/>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬J=N"/>
+<org.eventb.core.prPred name="p171" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+<org.eventb.core.prPred name="p184" org.eventb.core.predicate="nxt∈{R1,R2,R3,R4,R5,R6,R7,R8,R9,R10} ⇸ ℙ({A,B,C,D,E,F,G,H,I,J,K,L,M,N} × {A,B,C,D,E,F,G,H,I,J,K,L,M,N})"/>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬D=M"/>
+<org.eventb.core.prPred name="p159" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p182" org.eventb.core.predicate="r∈dom(nxt)∧nxt∈{R1,R2,R3,R4,R5,R6,R7,R8,R9,R10} ⇸ ℙ({A,B,C,D,E,F,G,H,I,J,K,L,M,N} × {A,B,C,D,E,F,G,H,I,J,K,L,M,N})"/>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R9"/>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬C=M"/>
+<org.eventb.core.prPred name="p170" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬F=M"/>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=E"/>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=J"/>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R9"/>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R8"/>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=E"/>
+<org.eventb.core.prPred name="p172" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R6=R10"/>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=K"/>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R5"/>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=F"/>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=H"/>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=J"/>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=H"/>
+<org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R6"/>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬A=N"/>
+<org.eventb.core.prPred name="p178" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R8"/>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=I"/>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=H"/>
+<org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R4=R10"/>
+<org.eventb.core.prPred name="p161" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p155" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=E"/>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬J=M"/>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R3"/>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=K"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=J"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=K"/>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R3=R4"/>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=L"/>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R6"/>
+<org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R7=R8"/>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=G"/>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬I=M"/>
+<org.eventb.core.prPred name="p157" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=F"/>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=J"/>
+<org.eventb.core.prPred name="p153" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬G=M"/>
+<org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬C=N"/>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=I"/>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬H=N"/>
+<org.eventb.core.prPred name="p180" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=I"/>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=K"/>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬K=N"/>
+<org.eventb.core.prPred name="p145" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R7"/>
+<org.eventb.core.prPred name="p175" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p167" org.eventb.core.predicate="GRN⊆S">
+<org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+<org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=E"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_formation/act2/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS,ROUTES,S">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139,p140"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139,p140"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p141" org.eventb.core.prInfHyps="p142"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p141"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p143" org.eventb.core.prInfHyps="p144"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p143"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p145" org.eventb.core.prInfHyps="p146"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p145"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p147" org.eventb.core.prInfHyps="p148"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p147"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p149"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p151"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p150"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p152" org.eventb.core.prInfHyps="p153"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p152"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p154"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p155" org.eventb.core.prInfHyps="p156"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p155"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p157"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p158"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p159" org.eventb.core.prInfHyps="p160"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p159"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p161" org.eventb.core.prInfHyps="p162"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p161"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p163" org.eventb.core.prInfHyps="p164"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p163"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p165" org.eventb.core.prInfHyps="p166"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p165"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p167"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p168"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p142"/>
+<org.eventb.core.prHypAction name="FORWARD_INF21" org.eventb.core.prHyps="p144" org.eventb.core.prInfHyps="p169"/>
+<org.eventb.core.prHypAction name="HIDE22" org.eventb.core.prHyps="p144"/>
+<org.eventb.core.prHypAction name="FORWARD_INF23" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p170"/>
+<org.eventb.core.prHypAction name="HIDE24" org.eventb.core.prHyps="p146"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p151" org.eventb.core.prInfHyps="p171"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p151"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p153" org.eventb.core.prInfHyps="p172"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p153"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p156" org.eventb.core.prInfHyps="p173"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p156"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p160" org.eventb.core.prInfHyps="p174"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p160"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p162" org.eventb.core.prInfHyps="p175"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p162"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p164" org.eventb.core.prInfHyps="p176"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p164"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p166" org.eventb.core.prInfHyps="p177"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p166"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p168" org.eventb.core.prInfHyps="p178"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p168"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p169" org.eventb.core.prInfHyps="p179"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p169"/>
+<org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p170" org.eventb.core.prInfHyps="p180"/>
+<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p170"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N})" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p181">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps=""/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10})" org.eventb.core.prGoal="p181" org.eventb.core.prHyps="p95">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p182">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps=""/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p182" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p183"/>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p184"/>
+<org.eventb.core.prAnte name="2" org.eventb.core.prGoal="p185"/>
+<org.eventb.core.prAnte name="3" org.eventb.core.prGoal="p186"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p95"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p3"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prPred name="p162" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=D"/>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=F"/>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧fst(r)∈dom(SIG)∧SIG∈BLOCKS ⇸ S"/>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=K"/>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬K=M"/>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=H"/>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R6"/>
+<org.eventb.core.prPred name="p154" org.eventb.core.predicate="blpt⊆BLOCKS">
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R9"/>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=B"/>
+<org.eventb.core.prPred name="p166" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬D=N"/>
+<org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R5"/>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=J"/>
+<org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p160" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=L"/>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=J"/>
+<org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R8=R10"/>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R4"/>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=F"/>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=J"/>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬L=M"/>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R2=R10"/>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=L"/>
+<org.eventb.core.prPred name="p156" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R7"/>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=K"/>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=C"/>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=G"/>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬H=M"/>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬F=N"/>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=K"/>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=I"/>
+<org.eventb.core.prPred name="p179" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p164" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=L"/>
+<org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R9"/>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R6"/>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=D"/>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=K"/>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=G"/>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=L"/>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=I"/>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬I=N"/>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R8"/>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=L"/>
+<org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R9"/>
+<org.eventb.core.prPred name="p177" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R9"/>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R2=R3"/>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R5"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬B=M"/>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=K"/>
+<org.eventb.core.prPred name="p183" org.eventb.core.predicate="r∈dom(fst)"/>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}"/>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬R1=R2"/>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="¬M=N"/>
+<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R7"/>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}"/>
+<org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R7=R10"/>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=F"/>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=I"/>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R3=R10"/>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=J"/>
+<org.eventb.core.prPred name="p165" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=I"/>
+<org.eventb.core.prPred name="p173" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R4=R5"/>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=L"/>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=L"/>
+<org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R8"/>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R4"/>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})"/>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R8"/>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=I"/>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=K"/>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=H"/>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=H"/>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=C"/>
+<org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p168" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p140" org.eventb.core.predicate="¬R9=R10"/>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R1=R10"/>
+<org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R7"/>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=G"/>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=L"/>
+<org.eventb.core.prPred name="p163" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R5=R6"/>
+<org.eventb.core.prPred name="p174" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p169" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p149" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=L"/>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R7"/>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬E=M"/>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=H"/>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=J"/>
+<org.eventb.core.prPred name="p176" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=D"/>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=G"/>
+<org.eventb.core.prPred name="p158" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=L"/>
+<org.eventb.core.prPred name="p185" org.eventb.core.predicate="fst(r)∈dom(SIG)"/>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬E=N"/>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=G"/>
+<org.eventb.core.prPred name="p146" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R6=R7"/>
+<org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R5=R10"/>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬G=N"/>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬B=N"/>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬A=M"/>
+<org.eventb.core.prPred name="p150" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p148" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R8=R9"/>
+<org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R9"/>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="¬L=N"/>
+<org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R8"/>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬J=N"/>
+<org.eventb.core.prPred name="p171" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬D=M"/>
+<org.eventb.core.prPred name="p159" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R9"/>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬C=M"/>
+<org.eventb.core.prPred name="p170" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬F=M"/>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=E"/>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=J"/>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R9"/>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R8"/>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=E"/>
+<org.eventb.core.prPred name="p172" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R6=R10"/>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=K"/>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R5"/>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=F"/>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=H"/>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=J"/>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=H"/>
+<org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R6"/>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬A=N"/>
+<org.eventb.core.prPred name="p178" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R8"/>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=I"/>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=H"/>
+<org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R4=R10"/>
+<org.eventb.core.prPred name="p161" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p155" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=E"/>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬J=M"/>
+<org.eventb.core.prPred name="p181" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ {A,B,C,D,E,F,G,H,I,J,K,L,M,N}∧fst(r)∈dom(SIG)∧SIG∈{A,B,C,D,E,F,G,H,I,J,K,L,M,N} ⇸ S"/>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R3"/>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=K"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=J"/>
+<org.eventb.core.prPred name="p182" org.eventb.core.predicate="r∈dom(fst)∧fst∈{R1,R2,R3,R4,R5,R6,R7,R8,R9,R10} ⇸ {A,B,C,D,E,F,G,H,I,J,K,L,M,N}∧fst(r)∈dom(SIG)∧SIG∈{A,B,C,D,E,F,G,H,I,J,K,L,M,N} ⇸ S"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=K"/>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R3=R4"/>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=L"/>
+<org.eventb.core.prPred name="p186" org.eventb.core.predicate="SIG∈{A,B,C,D,E,F,G,H,I,J,K,L,M,N} ⇸ S"/>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R6"/>
+<org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R7=R8"/>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=G"/>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬I=M"/>
+<org.eventb.core.prPred name="p157" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=F"/>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=J"/>
+<org.eventb.core.prPred name="p153" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬G=M"/>
+<org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬C=N"/>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=I"/>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬H=N"/>
+<org.eventb.core.prPred name="p180" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=I"/>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=K"/>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬K=N"/>
+<org.eventb.core.prPred name="p145" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R7"/>
+<org.eventb.core.prPred name="p175" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p167" org.eventb.core.predicate="GRN⊆S">
+<org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p184" org.eventb.core.predicate="fst∈{R1,R2,R3,R4,R5,R6,R7,R8,R9,R10} ⇸ {A,B,C,D,E,F,G,H,I,J,K,L,M,N}"/>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=E"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_formation/GRN/EQL" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p93"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p140" org.eventb.core.prInfHyps="p141"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p140"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p143"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p142"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p144" org.eventb.core.prInfHyps="p145"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p144"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p147"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p146"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p148"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p149" org.eventb.core.prInfHyps="p150"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p149"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p151" org.eventb.core.prInfHyps="p152"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p151"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p153"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p154" org.eventb.core.prInfHyps="p155"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p154"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p156"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p157"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p158" org.eventb.core.prInfHyps="p159"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p158"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p160" org.eventb.core.prInfHyps="p161"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p160"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p162" org.eventb.core.prInfHyps="p163"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p162"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p164" org.eventb.core.prInfHyps="p165"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p164"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p166"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p141" org.eventb.core.prInfHyps="p167"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p141"/>
+<org.eventb.core.prHypAction name="FORWARD_INF21" org.eventb.core.prHyps="p143" org.eventb.core.prInfHyps="p168"/>
+<org.eventb.core.prHypAction name="HIDE22" org.eventb.core.prHyps="p143"/>
+<org.eventb.core.prHypAction name="FORWARD_INF23" org.eventb.core.prHyps="p145" org.eventb.core.prInfHyps="p169"/>
+<org.eventb.core.prHypAction name="HIDE24" org.eventb.core.prHyps="p145"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p170"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p150"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p152" org.eventb.core.prInfHyps="p171"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p152"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p155" org.eventb.core.prInfHyps="p172"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p155"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p159" org.eventb.core.prInfHyps="p173"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p159"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p161" org.eventb.core.prInfHyps="p174"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p161"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p163" org.eventb.core.prInfHyps="p175"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p163"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p165" org.eventb.core.prInfHyps="p176"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p165"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p167" org.eventb.core.prInfHyps="p177"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p167"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p168" org.eventb.core.prInfHyps="p178"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p168"/>
+<org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p169" org.eventb.core.prInfHyps="p179"/>
+<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p169"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prPred name="p161" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬I=K">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬K=M">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p153" org.eventb.core.predicate="blpt⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R7=R9">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p165" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=N">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=J">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p159" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p150" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=L">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=J">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R8=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=J">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬L=M">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=L">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p155" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=K">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=M">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=N">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬J=K">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p178" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p163" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=L">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R9">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=K">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬K=L">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=N">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=L">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R9">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p176" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R9">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=M">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=K">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬M=N">
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p140" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬I=J">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p164" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p172" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=L">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=L">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=K">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p167" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R9=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R10">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=L">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p162" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p173" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p168" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p148" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=L">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=M">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬H=J">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p175" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p157" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=L">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=N">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p145" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=N">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=N">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=M">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p149" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R8=R9">
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R9">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬L=N">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=N">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p170" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=M">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p158" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R9">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=M">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p169" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=M">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=J">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R9">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p171" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=K">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=J">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=N">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p177" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p160" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p154" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=M">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=K">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=J">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=K">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬J=L">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=M">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p156" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=J">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=M">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p146" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=N">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=N">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p179" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=K">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=N">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p174" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p166" org.eventb.core.predicate="GRN⊆S">
+<org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+<org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="route_formation/frm/EQL" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p93"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p140" org.eventb.core.prInfHyps="p141"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p140"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p143"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p142"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p144" org.eventb.core.prInfHyps="p145"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p144"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p147"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p146"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p148"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p149" org.eventb.core.prInfHyps="p150"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p149"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p151" org.eventb.core.prInfHyps="p152"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p151"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p153"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p154" org.eventb.core.prInfHyps="p155"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p154"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p156"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p157"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p158" org.eventb.core.prInfHyps="p159"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p158"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p160" org.eventb.core.prInfHyps="p161"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p160"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p162" org.eventb.core.prInfHyps="p163"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p162"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p164" org.eventb.core.prInfHyps="p165"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p164"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p166"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p141" org.eventb.core.prInfHyps="p167"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p141"/>
+<org.eventb.core.prHypAction name="FORWARD_INF21" org.eventb.core.prHyps="p143" org.eventb.core.prInfHyps="p168"/>
+<org.eventb.core.prHypAction name="HIDE22" org.eventb.core.prHyps="p143"/>
+<org.eventb.core.prHypAction name="FORWARD_INF23" org.eventb.core.prHyps="p145" org.eventb.core.prInfHyps="p169"/>
+<org.eventb.core.prHypAction name="HIDE24" org.eventb.core.prHyps="p145"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p170"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p150"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p152" org.eventb.core.prInfHyps="p171"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p152"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p155" org.eventb.core.prInfHyps="p172"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p155"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p159" org.eventb.core.prInfHyps="p173"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p159"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p161" org.eventb.core.prInfHyps="p174"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p161"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p163" org.eventb.core.prInfHyps="p175"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p163"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p165" org.eventb.core.prInfHyps="p176"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p165"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p167" org.eventb.core.prInfHyps="p177"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p167"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p168" org.eventb.core.prInfHyps="p178"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p168"/>
+<org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p169" org.eventb.core.prInfHyps="p179"/>
+<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p169"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prPred name="p161" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬I=K">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬K=M">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p153" org.eventb.core.predicate="blpt⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R7=R9">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p165" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=N">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=J">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p159" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p150" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=L">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=J">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R8=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=J">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬L=M">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=L">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p155" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=K">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=M">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=N">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬J=K">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p178" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p163" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=L">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R9">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=K">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬K=L">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=N">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=L">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R9">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p176" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R9">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=M">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=K">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬M=N">
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p140" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬I=J">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p164" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p172" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=L">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=L">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=K">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p167" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R9=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R10">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=L">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p162" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p173" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p168" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p148" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=L">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=M">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬H=J">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p175" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p157" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=L">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=N">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p145" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=N">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=N">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=M">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p149" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R8=R9">
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R9">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬L=N">
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=N">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p170" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=M">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p158" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R9">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=M">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p169" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=M">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=J">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R9">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p171" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=K">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=J">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=N">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p177" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R10">
+<org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p160" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p154" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=M">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=K">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=J">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=K">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬J=L">
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=M">
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p156" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=J">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=M">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p146" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=N">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=N">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p179" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=K">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=N">
+<org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p174" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p166" org.eventb.core.predicate="GRN⊆S">
+<org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+<org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="inv1/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(S,{S1},{S2},{S3},{S4},{S5}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p82"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p81"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p84"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p83"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p86"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p85"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p88"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p87"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p90,p91"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p89"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p93"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p92"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p94"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p96"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p95"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p98"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p97"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p99"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p100" org.eventb.core.prInfHyps="p101"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p100"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p102" org.eventb.core.prInfHyps="p103"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p102"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p104"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p105"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p106" org.eventb.core.prInfHyps="p107"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p106"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p108" org.eventb.core.prInfHyps="p109"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p108"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p110" org.eventb.core.prInfHyps="p111"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p110"/>
+<org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p112" org.eventb.core.prInfHyps="p113"/>
+<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p112"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p114"/>
+<org.eventb.core.prHypAction name="FORWARD_INF21" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p115"/>
+<org.eventb.core.prHypAction name="HIDE22" org.eventb.core.prHyps="p82"/>
+<org.eventb.core.prHypAction name="FORWARD_INF23" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p116"/>
+<org.eventb.core.prHypAction name="HIDE24" org.eventb.core.prHyps="p84"/>
+<org.eventb.core.prHypAction name="FORWARD_INF25" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p117"/>
+<org.eventb.core.prHypAction name="HIDE26" org.eventb.core.prHyps="p86"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p118"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p96"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p98" org.eventb.core.prInfHyps="p119"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p98"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p120"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p101"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p103" org.eventb.core.prInfHyps="p121"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p103"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p107" org.eventb.core.prInfHyps="p122"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p107"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p109" org.eventb.core.prInfHyps="p123"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p109"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p111" org.eventb.core.prInfHyps="p124"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p111"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p113" org.eventb.core.prInfHyps="p125"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p113"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p115" org.eventb.core.prInfHyps="p126"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p115"/>
+<org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p116" org.eventb.core.prInfHyps="p127"/>
+<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p116"/>
+<org.eventb.core.prHypAction name="FORWARD_INF20" org.eventb.core.prHyps="p117" org.eventb.core.prInfHyps="p128"/>
+<org.eventb.core.prHypAction name="HIDE21" org.eventb.core.prHyps="p117"/>
+<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
+<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p129"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E"/>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H"/>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I"/>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G"/>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C"/>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p123" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F"/>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬S4=S5">
+<org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G"/>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬S1=S5">
+<org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·b∈blpt∧r∈ROUTES∧b ↦ r∈rtbl⇒nxt(r)(b)∈{lft(b),rht(b)}∨(nxt(r))∼(b)∈{lft(b),rht(b)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬S3=S5">
+<org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})"/>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="lft={B ↦ C,G ↦ I,E ↦ G}"/>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="S={S1,S2,S3,S4,S5}">
+<org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+<org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G"/>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})">
+<org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+<org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H"/>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p127" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F"/>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H"/>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p129" org.eventb.core.predicate="(lft∪rht)∩(TRK∪TRK∼)∈blpt ⇸ {A,B,C,D,E,F,G,H,I}"/>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p121" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·b∈blpt∧b ↦ r∈rtbl⇒nxt(r)(b)∈{lft(b),rht(b)}∨(nxt(r))∼(b)∈{lft(b),rht(b)}">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D"/>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬S2=S3">
+<org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I"/>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F"/>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I"/>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B"/>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C"/>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="lft={B ↦ C,G ↦ I,E ↦ G}∧rht={B ↦ D,G ↦ H,E ↦ D}"/>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I"/>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬S2=S4">
+<org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬S1=S2">
+<org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F"/>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬S1=S3">
+<org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p124" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="resrt⊆ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬S3=S4">
+<org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E"/>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="GRN⊆S">
+<org.eventb.core.prIdent name="GRN" org.eventb.core.type="ℙ(S)"/>
+<org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F"/>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p120" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D"/>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬S2=S5">
+<org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I"/>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="blpt⊆BLOCKS"/>
+<org.eventb.core.prPred name="p128" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p122" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I"/>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G"/>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(lft∪rht)∩(TRK∪TRK∼)∈blpt ⇸ BLOCKS"/>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p126" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G"/>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·b∈blpt∧⊤∧b ↦ r∈rtbl⇒nxt(r)(b)∈{lft(b),rht(b)}∨(nxt(r))∼(b)∈{lft(b),rht(b)}">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H"/>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H"/>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬S1=S4">
+<org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H"/>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E"/>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="rht={B ↦ D,G ↦ H,E ↦ D}"/>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I"/>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I"/>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E"/>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p125" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G"/>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}"/>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="resbl⊆BLOCKS">
+<org.eventb.core.prIdent name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="FRONT_MOVE_2/grd3/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(S,{S1},{S2},{S3},{S4},{S5}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p82"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p81"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p84"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p83"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p86"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p85"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p88"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p87"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p90"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p89"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p92"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p91"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p93"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p95"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p94"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p97"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p96"/>
+<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p98" org.eventb.core.prInfHyps="p99"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p98"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p100" org.eventb.core.prInfHyps="p101"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p100"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p102" org.eventb.core.prInfHyps="p103"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p102"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p104" org.eventb.core.prInfHyps="p105"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p104"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p106" org.eventb.core.prInfHyps="p107"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p106"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p108"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p82"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p109"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p84"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p110"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p86"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p111"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p95"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p112"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p97"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p99" org.eventb.core.prInfHyps="p113"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p99"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p114"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p101"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p103" org.eventb.core.prInfHyps="p115"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p103"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p105" org.eventb.core.prInfHyps="p116"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p105"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p107" org.eventb.core.prInfHyps="p117"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p107"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p108" org.eventb.core.prInfHyps="p118"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p108"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p109" org.eventb.core.prInfHyps="p119"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p109"/>
+<org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p110" org.eventb.core.prInfHyps="p120"/>
+<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p110"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.eq" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh (BLOCKS={A,B,C,D,E,F,G,H,I})" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p121">
+<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps=""/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.conj" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p121" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p122"/>
+<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p123"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p2"/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E"/>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="b∈dom(TRK)∧TRK∈BLOCKS ⇸ BLOCKS"/>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H"/>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I"/>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G"/>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p123" org.eventb.core.predicate="TRK∈{A,B,C,D,E,F,G,H,I} ⇸ {A,B,C,D,E,F,G,H,I}"/>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C"/>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F"/>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬S4=S5">
+<org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G"/>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬S1=S5">
+<org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬S3=S5">
+<org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})"/>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="S={S1,S2,S3,S4,S5}">
+<org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+<org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G"/>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})">
+<org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+<org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H"/>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F"/>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H"/>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="b∉dom(TRK)"/>
+<org.eventb.core.prPred name="p122" org.eventb.core.predicate="b∈dom(TRK)"/>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D"/>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬S2=S3">
+<org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I"/>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F"/>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I"/>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B"/>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C"/>
+<org.eventb.core.prPred name="p121" org.eventb.core.predicate="b∈dom(TRK)∧TRK∈{A,B,C,D,E,F,G,H,I} ⇸ {A,B,C,D,E,F,G,H,I}"/>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I"/>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬S2=S4">
+<org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬S1=S2">
+<org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F"/>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬S1=S3">
+<org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬S3=S4">
+<org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E"/>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F"/>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D"/>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬S2=S5">
+<org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I"/>
+<org.eventb.core.prPred name="p120" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I"/>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G"/>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬b∈dom(TRK)"/>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G"/>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H"/>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H"/>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬S1=S4">
+<org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H"/>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H"/>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D"/>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E"/>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I"/>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I"/>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E"/>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G"/>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}"/>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="FRONT_MOVE_2/grd3/GRD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(S,{S1},{S2},{S3},{S4},{S5}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p91">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p82"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p81"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p84"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p83"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p86"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p85"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p88"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p87"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p90"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p89"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p92"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p94"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p93"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p96"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p95"/>
+<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p98"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p97"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p99" org.eventb.core.prInfHyps="p100"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p99"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p102"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p101"/>
+<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p103" org.eventb.core.prInfHyps="p104"/>
+<org.eventb.core.prHypAction name="HIDE12" org.eventb.core.prHyps="p103"/>
+<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p105" org.eventb.core.prInfHyps="p106"/>
+<org.eventb.core.prHypAction name="HIDE14" org.eventb.core.prHyps="p105"/>
+<org.eventb.core.prHypAction name="FORWARD_INF15" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p107"/>
+<org.eventb.core.prHypAction name="HIDE16" org.eventb.core.prHyps="p82"/>
+<org.eventb.core.prHypAction name="FORWARD_INF17" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p108"/>
+<org.eventb.core.prHypAction name="HIDE18" org.eventb.core.prHyps="p84"/>
+<org.eventb.core.prHypAction name="FORWARD_INF19" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p109"/>
+<org.eventb.core.prHypAction name="HIDE20" org.eventb.core.prHyps="p86"/>
+<org.eventb.core.prRule name="org.eventb.core.seqprover.autoRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="0">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p110"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p94"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p111"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p96"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p98" org.eventb.core.prInfHyps="p112"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p98"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p100" org.eventb.core.prInfHyps="p113"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p100"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p102" org.eventb.core.prInfHyps="p114"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p102"/>
+<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p104" org.eventb.core.prInfHyps="p115"/>
+<org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p104"/>
+<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p106" org.eventb.core.prInfHyps="p116"/>
+<org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p106"/>
+<org.eventb.core.prHypAction name="FORWARD_INF14" org.eventb.core.prHyps="p107" org.eventb.core.prInfHyps="p117"/>
+<org.eventb.core.prHypAction name="HIDE15" org.eventb.core.prHyps="p107"/>
+<org.eventb.core.prHypAction name="FORWARD_INF16" org.eventb.core.prHyps="p108" org.eventb.core.prInfHyps="p118"/>
+<org.eventb.core.prHypAction name="HIDE17" org.eventb.core.prHyps="p108"/>
+<org.eventb.core.prHypAction name="FORWARD_INF18" org.eventb.core.prHyps="p109" org.eventb.core.prInfHyps="p119"/>
+<org.eventb.core.prHypAction name="HIDE19" org.eventb.core.prHyps="p109"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prIdent name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬TRK(b)∈OCC"/>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p114" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬S4=S5">
+<org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬S1=S5">
+<org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬S3=S5">
+<org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="S={S1,S2,S3,S4,S5}">
+<org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+<org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒¬rsrtbl(a)=rsrtbl(b)">
+<org.eventb.core.prIdent name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="TRK(b)∉OCC"/>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})">
+<org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+<org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p110" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p118" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p104" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬S2=S3">
+<org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬S2=S4">
+<org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬S1=S2">
+<org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬S1=S3">
+<org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p105" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p115" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬S3=S4">
+<org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p109" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p112" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬S2=S5">
+<org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p119" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p113" org.eventb.core.predicate="∀r⦂ROUTES·(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p117" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p92" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p107" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬S1=S4">
+<org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+<org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p108" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p116" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p106" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·⊤∧x ↦ y∈nxt(r))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p111" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="FRONT_MOVE_2/grd2/GRD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p0">
+<org.eventb.core.prRule name="org.eventb.core.seqprover.hyp" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p0"/>
+<org.eventb.core.prIdent name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+<org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="b∈dom(TRK)"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="FRONT_MOVE_1/act3/WD"/>
+<org.eventb.core.prProof name="FRONT_MOVE_2/act1/WD"/>
+<org.eventb.core.prProof name="BACK_MOVE_2/act4/WD"/>
+<org.eventb.core.prProof name="point_positionning/act1/WD"/>
+</org.eventb.core.prFile>
diff --git a/Train_B_Book/train_4.bps b/Train_B_Book/train_4.bps
new file mode 100644
index 0000000000000000000000000000000000000000..384c2afe63e81ab8caa882705550e773b702fdf1
--- /dev/null
+++ b/Train_B_Book/train_4.bps
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.psFile>
+    <org.eventb.core.psStatus name="INITIALISATION/inv1/INV" org.eventb.core.confidence="1000" org.eventb.core.poStamp="1" org.eventb.core.psBroken="true" org.eventb.core.psManual="true"/>
+    <org.eventb.core.psStatus name="point_positionning/inv1/INV" org.eventb.core.confidence="0" org.eventb.core.poStamp="1" org.eventb.core.psManual="true"/>
+</org.eventb.core.psFile>
diff --git a/Train_B_Book/train_4.bum b/Train_B_Book/train_4.bum
new file mode 100644
index 0000000000000000000000000000000000000000..03050b19108f17388dcfbcf180e12d5366a828ef
--- /dev/null
+++ b/Train_B_Book/train_4.bum
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.machineFile org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter" org.eventb.texttools.text_lastmodified="1390836432335" org.eventb.texttools.text_representation="machine train_4 //&#10; refines train_3  sees train_ctx2_prob&#10;&#10;variables resrt // set of reserved routes&#10;          resbl // set of reserved blocks&#10;          rsrtbl // reserved route of reserved block&#10;          OCC // occupied block&#10;          TRK // physical track&#10;          frm // set of formed routes&#10;          LBT // last block of the train&#10;          GRN // set of green signals&#10;&#10;&#10;invariants&#10;   @inv1 (lft ∪ rht) ∩ (TRK ∪ TRK∼) ∈ blpt⇸BLOCKS&#10;&#10;events&#10;  event INITIALISATION&#10;    then&#10;      @act1 resrt ≔ ∅&#10;      @act2 resbl ≔ ∅&#10;      @act3 rsrtbl ≔ ∅&#10;      @act4 OCC ≔ ∅&#10;      @act5 TRK ≔ ∅&#10;      @act6 frm ≔ ∅&#10;      @act7 LBT ≔ ∅&#10;      @act8 GRN ≔ ∅&#10;  end&#10;&#10;  event route_reservation extends route_reservation&#10;  end&#10;&#10;  event route_freeing extends route_freeing&#10;  end&#10;&#10;  event FRONT_MOVE_1 // the train enters its route&#10;  extends FRONT_MOVE_1&#10;  end&#10;&#10;  event FRONT_MOVE_2 // the front of the train moves&#10;  extends FRONT_MOVE_2&#10;  end&#10;&#10;  event BACK_MOVE_1 // the train leaves its route&#10;  extends BACK_MOVE_1&#10;  end&#10;&#10;  event BACK_MOVE_2 // the back of the train moves&#10;  extends BACK_MOVE_2&#10;  end&#10;&#10;  event point_positionning extends point_positionning&#10;  end&#10;&#10;  event route_formation extends route_formation&#10;  end&#10;end&#10;" version="5">
+    <org.eventb.core.refinesMachine name="internal_refinesMachine1" org.eventb.core.target="train_3"/>
+    <org.eventb.core.seesContext name="_fnB_kIdnEeOcUOZ5WAG6MA" org.eventb.core.target="train_ctx2_beebook"/>
+    <org.eventb.core.event name="internal_evt1" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.label="INITIALISATION">
+        <org.eventb.core.action name="internal_act1" org.eventb.core.assignment="resrt ≔ ∅" org.eventb.core.label="act1"/>
+        <org.eventb.core.action name="internal_act2" org.eventb.core.assignment="resbl ≔ ∅" org.eventb.core.label="act2"/>
+        <org.eventb.core.action name="internal_act3" org.eventb.core.assignment="rsrtbl ≔ ∅" org.eventb.core.label="act3"/>
+        <org.eventb.core.action name="internal_act4" org.eventb.core.assignment="OCC ≔ ∅" org.eventb.core.label="act4"/>
+        <org.eventb.core.action name="internal_element1" org.eventb.core.assignment="TRK ≔ ∅" org.eventb.core.label="act5"/>
+        <org.eventb.core.action name="internal_element2" org.eventb.core.assignment="frm ≔ ∅" org.eventb.core.label="act6"/>
+        <org.eventb.core.action name="internal_element3" org.eventb.core.assignment="LBT ≔ ∅" org.eventb.core.label="act7"/>
+        <org.eventb.core.action name="internal_element4" org.eventb.core.assignment="GRN ≔ ∅" org.eventb.core.label="act8"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_element1" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation">
+        <org.eventb.core.refinesEvent name="internal_refinesEvent1" org.eventb.core.target="route_reservation"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_element2" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing">
+        <org.eventb.core.refinesEvent name="internal_refinesEvent1" org.eventb.core.target="route_freeing"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_element3" org.eventb.core.comment="the train enters its route" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_1">
+        <org.eventb.core.refinesEvent name="internal_refinesEvent1" org.eventb.core.target="FRONT_MOVE_1"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_element4" org.eventb.core.comment="the front of the train moves" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_2">
+        <org.eventb.core.refinesEvent name="internal_refinesEvent1" org.eventb.core.target="FRONT_MOVE_2"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_element5" org.eventb.core.comment="the train leaves its route" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_1">
+        <org.eventb.core.refinesEvent name="internal_refinesEvent1" org.eventb.core.target="BACK_MOVE_1"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_element6" org.eventb.core.comment="the back of the train moves" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_2">
+        <org.eventb.core.refinesEvent name="internal_refinesEvent1" org.eventb.core.target="BACK_MOVE_2"/>
+    </org.eventb.core.event>
+    <org.eventb.core.event name="internal_element7" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="point_positionning">
+        <org.eventb.core.refinesEvent name="internal_refinesEvent1" org.eventb.core.target="point_positionning"/>
+    </org.eventb.core.event>
+    <org.eventb.core.invariant name="internal_element1I" org.eventb.core.label="inv1" org.eventb.core.predicate="(lft ∪ rht) ∩ (TRK ∪ TRK∼) ∈ blpt⇸BLOCKS"/>
+    <org.eventb.core.variable name="internal_var1" org.eventb.core.comment="set of reserved routes" org.eventb.core.identifier="resrt"/>
+    <org.eventb.core.variable name="internal_var2" org.eventb.core.comment="set of reserved blocks" org.eventb.core.identifier="resbl"/>
+    <org.eventb.core.variable name="internal_var3" org.eventb.core.comment="reserved route of reserved block" org.eventb.core.identifier="rsrtbl"/>
+    <org.eventb.core.variable name="internal_var4" org.eventb.core.comment="occupied block" org.eventb.core.identifier="OCC"/>
+    <org.eventb.core.variable name="internal_element1" org.eventb.core.comment="physical track" org.eventb.core.identifier="TRK"/>
+    <org.eventb.core.variable name="internal_element2" org.eventb.core.comment="set of formed routes" org.eventb.core.identifier="frm"/>
+    <org.eventb.core.variable name="internal_element3" org.eventb.core.comment="last block of the train" org.eventb.core.identifier="LBT"/>
+    <org.eventb.core.variable name="internal_element5" org.eventb.core.comment="set of green signals" org.eventb.core.identifier="GRN"/>
+    <org.eventb.core.event name="internal_refinesMachine2" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_formation">
+        <org.eventb.core.refinesEvent name="," org.eventb.core.target="route_formation"/>
+    </org.eventb.core.event>
+</org.eventb.core.machineFile>
diff --git a/Train_B_Book/train_4_POR.bcm b/Train_B_Book/train_4_POR.bcm
new file mode 100644
index 0000000000000000000000000000000000000000..2f9a22141d01d3f046f189810f0ac37ebc60149d
--- /dev/null
+++ b/Train_B_Book/train_4_POR.bcm
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scMachineFile org.eventb.core.accurate="false" org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter">
+    <org.eventb.core.scRefinesMachine name="'" org.eventb.core.scTarget="/Train/train_4.bcm" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.refinesMachine#'"/>
+    <org.eventb.core.scInternalContext name="train_ctx0">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx1">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.extendsContext#internal_extendsContext1"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm1" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scCarrierSet name="S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.carrierSet#internal_cst1" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.scConstant name="SIG" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx2">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx1.bcc|org.eventb.core.scContextFile#train_ctx1" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.extendsContext#internal_extendsContext1"/>
+        <org.eventb.core.scAxiom name="train_ctx2" org.eventb.core.label="axm1" org.eventb.core.predicate="blpt⊆BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx3" org.eventb.core.label="axm2" org.eventb.core.predicate="lft∈blpt → BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx4" org.eventb.core.label="axm3" org.eventb.core.predicate="rht∈blpt → BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx5" org.eventb.core.label="axm4" org.eventb.core.predicate="lft∩rht=(∅ ⦂ ℙ(BLOCKS×BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx6" org.eventb.core.label="axm5" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx7" org.eventb.core.label="axm6" org.eventb.core.predicate="blpt∩ran(fst)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx8" org.eventb.core.label="axm7" org.eventb.core.predicate="blpt∩ran(lst)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rht" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.scConstant name="lft" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.scConstant name="blpt" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx0_beebook">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.extendsContext#'"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm44" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx2" org.eventb.core.label="axm45" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAYdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx3" org.eventb.core.label="compute_rtbl_from_nxt" org.eventb.core.predicate="rtbl={b⦂BLOCKS,r⦂ROUTES·r∈dom(nxt)∧(b∈dom(nxt(r))∨b∈ran(nxt(r))) ∣ b ↦ r}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_tx3w0YdrEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx4" org.eventb.core.label="axm40" org.eventb.core.predicate="nxt={R1 ↦ {L ↦ A,A ↦ B,B ↦ C},R2 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ E,E ↦ F,F ↦ G},R3 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ K,K ↦ J,J ↦ N},R4 ↦ {M ↦ H,H ↦ I,I ↦ K,K ↦ F,F ↦ G},R5 ↦ {M ↦ H,H ↦ I,I ↦ J,J ↦ N},R6 ↦ {C ↦ B,B ↦ A,A ↦ L},R7 ↦ {G ↦ F,F ↦ E,E ↦ D,D ↦ B,B ↦ A,A ↦ L},R8 ↦ {N ↦ J,J ↦ K,K ↦ D,D ↦ B,B ↦ A,A ↦ L},R9 ↦ {G ↦ F,F ↦ K,K ↦ I,I ↦ H,H ↦ M},R10 ↦ {N ↦ J,J ↦ I,I ↦ H,H ↦ M}}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LA4doEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx5" org.eventb.core.label="axm41" org.eventb.core.predicate="fst={R1 ↦ L,R2 ↦ L,R3 ↦ L,R4 ↦ M,R5 ↦ M,R6 ↦ C,R7 ↦ G,R8 ↦ N,R9 ↦ G,R10 ↦ N}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LBIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx6" org.eventb.core.label="axm42" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ G,R3 ↦ N,R4 ↦ G,R5 ↦ N,R6 ↦ L,R7 ↦ L,R8 ↦ L,R9 ↦ M,R10 ↦ M}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5yEIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="A" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwIdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="B" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwYdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="C" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwodoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="D" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uw4doEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="E" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uxIdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="F" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uxYdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="G" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="H" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="I" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0odoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="J" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V04doEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="K" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V1IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="L" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V1YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="M" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="N" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="R10" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j9YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R1" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384odoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R2" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3844doEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R3" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj385IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R4" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj385YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R5" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R6" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R7" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8odoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R8" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j84doEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R9" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j9IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx1_beebook">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx1.bcc|org.eventb.core.scContextFile#train_ctx1" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.extendsContext#_5SetQIdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.scExtendsContext name="(" org.eventb.core.scTarget="/Train/train_ctx0_beebook.bcc|org.eventb.core.scContextFile#train_ctx0_beebook" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.extendsContext#_5SetQYdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.scAxiom name="train_ctx0_beebool" org.eventb.core.label="axm2" org.eventb.core.predicate="card(S)=5" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5SfUU4drEeOYLZrGGNvfWA" org.eventb.core.theorem="true"/>
+        <org.eventb.core.scAxiom name="train_ctx0_beeboom" org.eventb.core.label="axm3" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5Sf7YIdrEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx0_beeboon" org.eventb.core.label="axm4" org.eventb.core.predicate="SIG={L ↦ S1,M ↦ S2,N ↦ S3,C ↦ S4,G ↦ S5}" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5Sf7YYdrEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="S1" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SetQodrEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+        <org.eventb.core.scConstant name="S2" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SetQ4drEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+        <org.eventb.core.scConstant name="S3" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SfUUIdrEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+        <org.eventb.core.scConstant name="S4" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SfUUYdrEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+        <org.eventb.core.scConstant name="S5" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SfUUodrEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx2_beebook">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx2.bcc|org.eventb.core.scContextFile#train_ctx2" org.eventb.core.source="/Train/train_ctx2_beebook.buc|org.eventb.core.contextFile#train_ctx2_beebook|org.eventb.core.extendsContext#_MRgjEIdsEeOYLZrGGNvfWA"/>
+        <org.eventb.core.scExtendsContext name="(" org.eventb.core.scTarget="/Train/train_ctx1_beebook.bcc|org.eventb.core.scContextFile#train_ctx1_beebook" org.eventb.core.source="/Train/train_ctx2_beebook.buc|org.eventb.core.contextFile#train_ctx2_beebook|org.eventb.core.extendsContext#_MRgjEYdsEeOYLZrGGNvfWA"/>
+        <org.eventb.core.scAxiom name="train_ctx1_beebool" org.eventb.core.label="prob_axm1" org.eventb.core.predicate="blpt={B,D,F,I,J}" org.eventb.core.source="/Train/train_ctx2_beebook.buc|org.eventb.core.contextFile#train_ctx2_beebook|org.eventb.core.axiom#_MRgjEodsEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scSeesContext name="CSEES5" org.eventb.core.scTarget="/Train/train_ctx2_beebook.bcc" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.seesContext#_fnB_kIdnEeOcUOZ5WAG6MA"/>
+    <org.eventb.core.scInvariant name="train_ctx1" org.eventb.core.label="inv1" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx2" org.eventb.core.label="inv2" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx3" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx4" org.eventb.core.label="inv5" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx5" org.eventb.core.label="inv4" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx6" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx7" org.eventb.core.label="inv7" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx8" org.eventb.core.label="inv8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx9" org.eventb.core.label="inv1" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx:" org.eventb.core.label="inv2" org.eventb.core.predicate="frm⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx;" org.eventb.core.label="inv3" org.eventb.core.predicate="rsrtbl[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx=" org.eventb.core.label="inv4" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx&gt;" org.eventb.core.label="inv5" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx?" org.eventb.core.label="inv6" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctx@" org.eventb.core.label="inv7" org.eventb.core.predicate="LBT⊆OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxA" org.eventb.core.label="inv8" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxB" org.eventb.core.label="thm1" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxC" org.eventb.core.label="thm2" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxD" org.eventb.core.label="thm3" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctxE" org.eventb.core.label="inv4" org.eventb.core.predicate="rdy⊆frm" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_refinesMachine3" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxF" org.eventb.core.label="inv2" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxG" org.eventb.core.label="inv3" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxH" org.eventb.core.label="inv1" org.eventb.core.predicate="GRN⊆S" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxI" org.eventb.core.label="inv2" org.eventb.core.predicate="SIG[fst[rdy]]=GRN" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element2I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scInvariant name="train_ctxJ" org.eventb.core.label="thm1" org.eventb.core.predicate="rdy ◁ fst∈rdy ↣ BLOCKS" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element1T" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scInvariant name="train_ctx2_beebool" org.eventb.core.label="inv1" org.eventb.core.predicate="(lft∪rht)∩(TRK∪TRK∼)∈blpt ⇸ BLOCKS" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.invariant#internal_element1I" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scVariable name="rdy" org.eventb.core.abstract="false" org.eventb.core.concrete="false" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.variable#internal_element4" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="resrt" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.variable#internal_var1" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="OCC" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.variable#internal_var4" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="resbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.variable#internal_var2" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="GRN" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.variable#internal_element5" org.eventb.core.type="ℙ(S)"/>
+    <org.eventb.core.scVariable name="frm" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.variable#internal_element2" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scVariable name="TRK" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.variable#internal_element1" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+    <org.eventb.core.scVariable name="LBT" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.variable#internal_element3" org.eventb.core.type="ℙ(BLOCKS)"/>
+    <org.eventb.core.scVariable name="rsrtbl" org.eventb.core.abstract="true" org.eventb.core.concrete="true" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.variable#internal_var3" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+    <org.eventb.core.scEvent name="train_ctx2_beeboom" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MB">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_4.bcm|org.eventb.core.scMachineFile#train_4|org.eventb.core.scEvent#train_ctx2_beeboom" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MB"/>
+        <org.eventb.core.scAction name="(" org.eventb.core.assignment="resrt ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act1"/>
+        <org.eventb.core.scAction name=")" org.eventb.core.assignment="resbl ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act2"/>
+        <org.eventb.core.scAction name="*" org.eventb.core.assignment="rsrtbl ≔ ∅ ⦂ ℙ(BLOCKS×ROUTES)" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act3"/>
+        <org.eventb.core.scAction name="+" org.eventb.core.assignment="OCC ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_act4"/>
+        <org.eventb.core.scAction name="," org.eventb.core.assignment="TRK ≔ ∅ ⦂ ℙ(BLOCKS×BLOCKS)" org.eventb.core.label="act5" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="-" org.eventb.core.assignment="frm ≔ ∅ ⦂ ℙ(ROUTES)" org.eventb.core.label="act6" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="." org.eventb.core.assignment="LBT ≔ ∅ ⦂ ℙ(BLOCKS)" org.eventb.core.label="act7" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="/" org.eventb.core.assignment="GRN ≔ ∅ ⦂ ℙ(S)" org.eventb.core.label="act8" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.event#internal_evt1|org.eventb.core.action#internal_element4"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx2_beeboon" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MC">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_4.bcm|org.eventb.core.scMachineFile#train_4|org.eventb.core.scEvent#train_ctx2_beeboon" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MC|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd2" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="rsrtbl ≔ rsrtbl∪(rtbl ▷ {r})" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="u" org.eventb.core.assignment="resbl ≔ resbl∪rtbl∼[{r}]" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scGuard name="v" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MC|org.eventb.core.guard#_2AMecZSjEeOwFZMDEzeIXg" org.eventb.core.theorem="false"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx2_beebooo" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MD">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_4.bcm|org.eventb.core.scMachineFile#train_4|org.eventb.core.scEvent#train_ctx2_beebooo" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MD|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="resrt ≔ resrt ∖ {r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="frm ≔ frm ∖ {r}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element2|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx2_beeboop" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_1" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6ME">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_4.bcm|org.eventb.core.scMachineFile#train_4|org.eventb.core.scEvent#train_ctx2_beeboop" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6ME|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈dom(SIG)" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="SIG(b)∈GRN" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC∪{b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="LBT ≔ LBT∪{b}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="GRN ≔ GRN ∖ {SIG(b)}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scGuard name="f" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6ME|org.eventb.core.guard#_2ANFgJSjEeOwFZMDEzeIXg" org.eventb.core.theorem="false"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx2_beebooq" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_2" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MF">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_4.bcm|org.eventb.core.scMachineFile#train_4|org.eventb.core.scEvent#train_ctx2_beebooq" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MF|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC∪{TRK(b)}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scGuard name="d" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MF|org.eventb.core.guard#_2ANFgZSjEeOwFZMDEzeIXg" org.eventb.core.theorem="false"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx2_beeboor" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_1" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MG">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_4.bcm|org.eventb.core.scMachineFile#train_4|org.eventb.core.scEvent#train_ctx2_beeboor" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MG|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∉dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="f" org.eventb.core.assignment="LBT ≔ LBT ∖ {b}" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scGuard name="g" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MG|org.eventb.core.guard#_2ANskJSjEeOwFZMDEzeIXg" org.eventb.core.theorem="false"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx2_beeboos" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_2" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MH">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_4.bcm|org.eventb.core.scMachineFile#train_4|org.eventb.core.scEvent#train_ctx2_beeboos" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MH|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element2" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name="*" org.eventb.core.label="grd3" org.eventb.core.predicate="TRK(b)∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="c" org.eventb.core.assignment="OCC ≔ OCC ∖ {b}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scAction name="d" org.eventb.core.assignment="rsrtbl ≔ {b} ⩤ rsrtbl" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element2"/>
+        <org.eventb.core.scAction name="e" org.eventb.core.assignment="resbl ≔ resbl ∖ {b}" org.eventb.core.label="act3" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element3"/>
+        <org.eventb.core.scAction name="f" org.eventb.core.assignment="LBT ≔ (LBT ∖ {b})∪{TRK(b)}" org.eventb.core.label="act4" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.action#internal_element4"/>
+        <org.eventb.core.scParameter name="b" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.parameter#internal_element1" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scGuard name="g" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MH|org.eventb.core.guard#_2ANskZSjEeOwFZMDEzeIXg" org.eventb.core.theorem="false"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx2_beeboot" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="point_positionning" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MI">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_4.bcm|org.eventb.core.scMachineFile#train_4|org.eventb.core.scEvent#train_ctx2_beeboot" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MI|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="'" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.guard#internal_element1" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="TRK ≔ (dom(nxt(r)) ⩤ TRK ⩥ ran(nxt(r)))∪nxt(r)" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.action#internal_element1"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.parameter#internal_element1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scGuard name="t" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MI|org.eventb.core.guard#_2ANskpSjEeOwFZMDEzeIXg" org.eventb.core.theorem="false"/>
+    </org.eventb.core.scEvent>
+    <org.eventb.core.scEvent name="train_ctx2_beeboou" org.eventb.core.accurate="true" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_formation" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MJ">
+        <org.eventb.core.scRefinesEvent name="'" org.eventb.core.scTarget="/Train/train_4.bcm|org.eventb.core.scMachineFile#train_4|org.eventb.core.scEvent#train_ctx2_beeboou" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MJ|org.eventb.core.refinesEvent#'"/>
+        <org.eventb.core.scGuard name="(" org.eventb.core.label="grd1" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.guard#(" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scGuard name=")" org.eventb.core.label="grd2" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.guard#)" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAction name="s" org.eventb.core.assignment="frm ≔ frm∪{r}" org.eventb.core.label="act1" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.action#*"/>
+        <org.eventb.core.scAction name="t" org.eventb.core.assignment="GRN ≔ GRN∪{SIG(fst(r))}" org.eventb.core.label="act2" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.action#+"/>
+        <org.eventb.core.scParameter name="r" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.parameter#'" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scGuard name="u" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MJ|org.eventb.core.guard#_2AOToJSjEeOwFZMDEzeIXg" org.eventb.core.theorem="false"/>
+    </org.eventb.core.scEvent>
+</org.eventb.core.scMachineFile>
diff --git a/Train_B_Book/train_4_POR.bpo b/Train_B_Book/train_4_POR.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..5624ccfa8b721e75a4805170cf5b0ab20f31416c
--- /dev/null
+++ b/Train_B_Book/train_4_POR.bpo
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="1">
+    <org.eventb.core.poPredicateSet name="CTXHYP" org.eventb.core.poStamp="1">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTET" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEU" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEV" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEW" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEX" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEY" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEZ" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="ROUTE[" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+        <org.eventb.core.poPredicate name="ROUTE\" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poPredicate name="ROUTE]" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poPredicate name="ROUTE^" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poPredicate name="ROUTE_" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poPredicate name="ROUTE`" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+        <org.eventb.core.poIdentifier name="S" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.poIdentifier name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        <org.eventb.core.poPredicate name="ROUTEa" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poIdentifier name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTEb" org.eventb.core.predicate="blpt⊆BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEc" org.eventb.core.predicate="lft∈blpt → BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEd" org.eventb.core.predicate="rht∈blpt → BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEe" org.eventb.core.predicate="lft∩rht=(∅ ⦂ ℙ(BLOCKS×BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEf" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEg" org.eventb.core.predicate="blpt∩ran(fst)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEh" org.eventb.core.predicate="blpt∩ran(lst)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poIdentifier name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="J" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="K" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="L" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="M" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="N" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="R10" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R2" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R3" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R4" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R5" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R6" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R7" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R8" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R9" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poPredicate name="ROUTEi" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEj" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAYdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEk" org.eventb.core.predicate="rtbl={b⦂BLOCKS,r⦂ROUTES·r∈dom(nxt)∧(b∈dom(nxt(r))∨b∈ran(nxt(r))) ∣ b ↦ r}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_tx3w0YdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poPredicate name="ROUTEl" org.eventb.core.predicate="nxt={R1 ↦ {L ↦ A,A ↦ B,B ↦ C},R2 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ E,E ↦ F,F ↦ G},R3 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ K,K ↦ J,J ↦ N},R4 ↦ {M ↦ H,H ↦ I,I ↦ K,K ↦ F,F ↦ G},R5 ↦ {M ↦ H,H ↦ I,I ↦ J,J ↦ N},R6 ↦ {C ↦ B,B ↦ A,A ↦ L},R7 ↦ {G ↦ F,F ↦ E,E ↦ D,D ↦ B,B ↦ A,A ↦ L},R8 ↦ {N ↦ J,J ↦ K,K ↦ D,D ↦ B,B ↦ A,A ↦ L},R9 ↦ {G ↦ F,F ↦ K,K ↦ I,I ↦ H,H ↦ M},R10 ↦ {N ↦ J,J ↦ I,I ↦ H,H ↦ M}}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LA4doEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEm" org.eventb.core.predicate="fst={R1 ↦ L,R2 ↦ L,R3 ↦ L,R4 ↦ M,R5 ↦ M,R6 ↦ C,R7 ↦ G,R8 ↦ N,R9 ↦ G,R10 ↦ N}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LBIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEn" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ G,R3 ↦ N,R4 ↦ G,R5 ↦ N,R6 ↦ L,R7 ↦ L,R8 ↦ L,R9 ↦ M,R10 ↦ M}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5yEIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poIdentifier name="S1" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S2" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S3" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S4" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S5" org.eventb.core.type="S"/>
+        <org.eventb.core.poPredicate name="ROUTEo" org.eventb.core.predicate="card(S)=5" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5SfUU4drEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poPredicate name="ROUTEp" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5Sf7YIdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poPredicate name="ROUTEq" org.eventb.core.predicate="SIG={L ↦ S1,M ↦ S2,N ↦ S3,C ↦ S4,G ↦ S5}" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5Sf7YYdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poPredicate name="ROUTEr" org.eventb.core.predicate="blpt={B,D,F,I,J}" org.eventb.core.source="/Train/train_ctx2_beebook.buc|org.eventb.core.contextFile#train_ctx2_beebook|org.eventb.core.axiom#_MRgjEodsEeOYLZrGGNvfWA"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.parentSet="/Train/train_4_POR.bpo|org.eventb.core.poFile#train_4_POR|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="1">
+        <org.eventb.core.poIdentifier name="rdy" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="GRN" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.poIdentifier name="frm" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="TRK" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="LBT" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poPredicate name="rsrtbm" org.eventb.core.predicate="resrt⊆ROUTES" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv1I"/>
+        <org.eventb.core.poPredicate name="rsrtbn" org.eventb.core.predicate="resbl⊆BLOCKS" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv2I"/>
+        <org.eventb.core.poPredicate name="rsrtbo" org.eventb.core.predicate="rsrtbl∈resbl → resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv3I"/>
+        <org.eventb.core.poPredicate name="rsrtbp" org.eventb.core.predicate="rsrtbl⊆rtbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv5I"/>
+        <org.eventb.core.poPredicate name="rsrtbq" org.eventb.core.predicate="OCC⊆resbl" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_inv4I"/>
+        <org.eventb.core.poPredicate name="rsrtbr" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rtbl∼[{r}] ∖ rsrtbl∼[{r}]]∩(rsrtbl∼[{r}] ∖ OCC)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtbs" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}]]⊆rsrtbl∼[{r}]" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtbt" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(nxt(r))[rsrtbl∼[{r}] ∖ OCC]⊆rsrtbl∼[{r}] ∖ OCC" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtbu" org.eventb.core.predicate="TRK∈BLOCKS ⤔ BLOCKS" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtbv" org.eventb.core.predicate="frm⊆resrt" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtbw" org.eventb.core.predicate="rsrtbl[OCC]⊆frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtbx" org.eventb.core.predicate="∀r⦂ROUTES·r∈resrt ∖ frm⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element4I"/>
+        <org.eventb.core.poPredicate name="rsrtby" org.eventb.core.predicate="∀x⦂BLOCKS,y⦂BLOCKS·x ↦ y∈TRK⇒(∃r⦂ROUTES·r∈ROUTES∧x ↦ y∈nxt(r))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element5I"/>
+        <org.eventb.core.poPredicate name="rsrtbz" org.eventb.core.predicate="∀r⦂ROUTES·r∈frm⇒rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element6I"/>
+        <org.eventb.core.poPredicate name="rsrtb{" org.eventb.core.predicate="LBT⊆OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element7I"/>
+        <org.eventb.core.poPredicate name="rsrtb|" org.eventb.core.predicate="∀a⦂BLOCKS,b⦂BLOCKS·b∈LBT∧b∈ran(nxt(rsrtbl(b)))∧a=(nxt(rsrtbl(b)))∼(b)∧a∈dom(rsrtbl)⇒rsrtbl(a)≠rsrtbl(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8I"/>
+        <org.eventb.core.poPredicate name="rsrtb}" org.eventb.core.predicate="∀b⦂BLOCKS·b∈OCC∧b∈dom(TRK)⇒nxt(rsrtbl(b))(b)=TRK(b)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element1T"/>
+        <org.eventb.core.poPredicate name="rsrtb~" org.eventb.core.predicate="ran(lst)∩(dom(TRK) ∖ ran(fst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8K"/>
+        <org.eventb.core.poPredicate name="rsrtc'" org.eventb.core.predicate="ran(fst)∩(ran(TRK) ∖ ran(lst))=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.invariant#internal_element8L"/>
+        <org.eventb.core.poPredicate name="rsrtc(" org.eventb.core.predicate="rdy⊆frm" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_refinesMachine3"/>
+        <org.eventb.core.poPredicate name="rsrtc)" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒rtbl ▷ {r}=rsrtbl ▷ {r}" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtc*" org.eventb.core.predicate="∀r⦂ROUTES·r∈rdy⇒dom(rtbl ▷ {r})∩OCC=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_2.bum|org.eventb.core.machineFile#train_2|org.eventb.core.invariant#internal_element3I"/>
+        <org.eventb.core.poPredicate name="rsrtc+" org.eventb.core.predicate="GRN⊆S" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element1I"/>
+        <org.eventb.core.poPredicate name="rsrtc," org.eventb.core.predicate="SIG[fst[rdy]]=GRN" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element2I"/>
+        <org.eventb.core.poPredicate name="rsrtc-" org.eventb.core.predicate="rdy ◁ fst∈rdy ↣ BLOCKS" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.invariant#internal_element1T"/>
+        <org.eventb.core.poPredicate name="rsrtc." org.eventb.core.predicate="(lft∪rht)∩(TRK∪TRK∼)∈blpt ⇸ BLOCKS" org.eventb.core.source="/Train/train_4.bum|org.eventb.core.machineFile#train_4|org.eventb.core.invariant#internal_element1I"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx2_beeboom" org.eventb.core.parentSet="/Train/train_4_POR.bpo|org.eventb.core.poFile#train_4_POR|org.eventb.core.poPredicateSet#CTXHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="TRK'" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="GRN'" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx2_beeboom" org.eventb.core.parentSet="/Train/train_4_POR.bpo|org.eventb.core.poFile#train_4_POR|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx2_beeboom" org.eventb.core.poStamp="0"/>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx2_beeboon" org.eventb.core.parentSet="/Train/train_4_POR.bpo|org.eventb.core.poFile#train_4_POR|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx2_beeboon" org.eventb.core.parentSet="/Train/train_4_POR.bpo|org.eventb.core.poFile#train_4_POR|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx2_beeboon" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∉resrt" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rtbl∼[{r}]∩resbl=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element1|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MC|org.eventb.core.guard#_2AMecZSjEeOwFZMDEzeIXg"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx2_beebooo" org.eventb.core.parentSet="/Train/train_4_POR.bpo|org.eventb.core.poFile#train_4_POR|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="resrt'" org.eventb.core.type="ℙ(ROUTES)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx2_beebooo" org.eventb.core.parentSet="/Train/train_4_POR.bpo|org.eventb.core.poFile#train_4_POR|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx2_beebooo" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ ran(rsrtbl)" org.eventb.core.source="/Train/train_0.bum|org.eventb.core.machineFile#train_0|org.eventb.core.event#internal_element2|org.eventb.core.guard#internal_element1"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx2_beeboop" org.eventb.core.parentSet="/Train/train_4_POR.bpo|org.eventb.core.poFile#train_4_POR|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="GRN'" org.eventb.core.type="ℙ(S)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx2_beeboop" org.eventb.core.parentSet="/Train/train_4_POR.bpo|org.eventb.core.poFile#train_4_POR|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx2_beeboop" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈dom(SIG)" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="SIG(b)∈GRN" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_element3|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6ME|org.eventb.core.guard#_2ANFgJSjEeOwFZMDEzeIXg"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx2_beebooq" org.eventb.core.parentSet="/Train/train_4_POR.bpo|org.eventb.core.poFile#train_4_POR|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx2_beebooq" org.eventb.core.parentSet="/Train/train_4_POR.bpo|org.eventb.core.poFile#train_4_POR|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx2_beebooq" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="TRK(b)∉OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element4|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MF|org.eventb.core.guard#_2ANFgZSjEeOwFZMDEzeIXg"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx2_beeboor" org.eventb.core.parentSet="/Train/train_4_POR.bpo|org.eventb.core.poFile#train_4_POR|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx2_beeboor" org.eventb.core.parentSet="/Train/train_4_POR.bpo|org.eventb.core.poFile#train_4_POR|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx2_beeboor" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∉dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element5|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MG|org.eventb.core.guard#_2ANskJSjEeOwFZMDEzeIXg"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx2_beeboos" org.eventb.core.parentSet="/Train/train_4_POR.bpo|org.eventb.core.poFile#train_4_POR|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="b" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="LBT'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rsrtbl'" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="OCC'" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="resbl'" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx2_beeboos" org.eventb.core.parentSet="/Train/train_4_POR.bpo|org.eventb.core.poFile#train_4_POR|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx2_beeboos" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="b∈LBT" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="b∈dom(TRK)" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element2"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="TRK(b)∈OCC" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element6|org.eventb.core.guard#internal_element3"/>
+        <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MH|org.eventb.core.guard#_2ANskZSjEeOwFZMDEzeIXg"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx2_beeboot" org.eventb.core.parentSet="/Train/train_4_POR.bpo|org.eventb.core.poFile#train_4_POR|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="TRK'" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx2_beeboot" org.eventb.core.parentSet="/Train/train_4_POR.bpo|org.eventb.core.poFile#train_4_POR|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx2_beeboot" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_1.bum|org.eventb.core.machineFile#train_1|org.eventb.core.event#internal_element7|org.eventb.core.guard#internal_element1"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MI|org.eventb.core.guard#_2ANskpSjEeOwFZMDEzeIXg"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTIDENTtrain_ctx2_beeboou" org.eventb.core.parentSet="/Train/train_4_POR.bpo|org.eventb.core.poFile#train_4_POR|org.eventb.core.poPredicateSet#ALLHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="r" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="frm'" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="GRN'" org.eventb.core.type="ℙ(S)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="EVTALLHYPtrain_ctx2_beeboou" org.eventb.core.parentSet="/Train/train_4_POR.bpo|org.eventb.core.poFile#train_4_POR|org.eventb.core.poPredicateSet#EVTIDENTtrain_ctx2_beeboou" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="r∈resrt ∖ frm" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.guard#("/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="rsrtbl∼[{r}] ◁ nxt(r)=rsrtbl∼[{r}] ◁ TRK" org.eventb.core.source="/Train/train_3.bum|org.eventb.core.machineFile#train_3|org.eventb.core.event#internal_refinesMachine2|org.eventb.core.guard#)"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="resrt ∖ ran(rsrtbl)=(∅ ⦂ ℙ(ROUTES))" org.eventb.core.source="/Train/train_4_POR.bum|org.eventb.core.machineFile#train_4_POR|org.eventb.core.event#_fnB_kIdnEeOcUOZ5WAG6MJ|org.eventb.core.guard#_2AOToJSjEeOwFZMDEzeIXg"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_4_POR.bpo|org.eventb.core.poFile#train_4_POR|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="1"/>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_4_POR.bpr b/Train_B_Book/train_4_POR.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..d13ec2a20267852024def0758a1effc175861a98
--- /dev/null
+++ b/Train_B_Book/train_4_POR.bpr
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.prFile version="1"/>
\ No newline at end of file
diff --git a/Train_B_Book/train_4_POR.bps b/Train_B_Book/train_4_POR.bps
new file mode 100644
index 0000000000000000000000000000000000000000..ced513e210f482c3c7cafb26e5e709e8b27ac922
--- /dev/null
+++ b/Train_B_Book/train_4_POR.bps
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.psFile/>
\ No newline at end of file
diff --git a/Train_B_Book/train_4_POR.bum b/Train_B_Book/train_4_POR.bum
new file mode 100644
index 0000000000000000000000000000000000000000..2c2ab4ba32e691d04566cd6e12d42bd1bb8cdaab
--- /dev/null
+++ b/Train_B_Book/train_4_POR.bum
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.machineFile org.eventb.core.configuration="org.eventb.core.fwd;uk.ac.ncl.eventb.ref.seq.filter" org.eventb.texttools.text_lastmodified="1392291717539" org.eventb.texttools.text_representation="machine train_4_POR refines train_4  sees train_ctx2_prob&#10;&#10;variables resrt // set of reserved routes&#10;          resbl // set of reserved blocks&#10;          rsrtbl // reserved route of reserved block&#10;          OCC // occupied block&#10;          TRK // physical track&#10;          frm // set of formed routes&#10;          LBT // last block of the train&#10;          GRN // set of green signals&#10;&#10;&#10;events&#10;  event INITIALISATION extends INITIALISATION&#10;  end&#10;&#10;  event route_reservation extends route_reservation&#10;   when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅&#10;  end&#10;&#10;  event route_freeing extends route_freeing&#10;  end&#10;&#10;  event FRONT_MOVE_1 // the train enters its route&#10;  extends FRONT_MOVE_1&#10;   when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅&#10;  end&#10;&#10;  event FRONT_MOVE_2 // the front of the train moves&#10;  extends FRONT_MOVE_2&#10;   when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅&#10;  end&#10;&#10;  event BACK_MOVE_1 // the train leaves its route&#10;  extends BACK_MOVE_1&#10;   when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅&#10;  end&#10;&#10;  event BACK_MOVE_2 // the back of the train moves&#10;  extends BACK_MOVE_2&#10;   when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅&#10;  end&#10;&#10;  event point_positionning extends point_positionning&#10;   when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅&#10;  end&#10;&#10;  event route_formation extends route_formation&#10;   when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅&#10;  end&#10;end&#10;" version="5">
+<org.eventb.core.refinesMachine name="'" org.eventb.core.target="train_4"/>
+<org.eventb.core.seesContext name="_fnB_kIdnEeOcUOZ5WAG6MA" org.eventb.core.target="train_ctx2_prob"/>
+<org.eventb.core.variable name="internal_var1" org.eventb.core.comment="set of reserved routes" org.eventb.core.identifier="resrt"/>
+<org.eventb.core.variable name="internal_var2" org.eventb.core.comment="set of reserved blocks" org.eventb.core.identifier="resbl"/>
+<org.eventb.core.variable name="internal_var3" org.eventb.core.comment="reserved route of reserved block" org.eventb.core.identifier="rsrtbl"/>
+<org.eventb.core.variable name="internal_var4" org.eventb.core.comment="occupied block" org.eventb.core.identifier="OCC"/>
+<org.eventb.core.variable name="internal_element1" org.eventb.core.comment="physical track" org.eventb.core.identifier="TRK"/>
+<org.eventb.core.variable name="internal_element2" org.eventb.core.comment="set of formed routes" org.eventb.core.identifier="frm"/>
+<org.eventb.core.variable name="internal_element3" org.eventb.core.comment="last block of the train" org.eventb.core.identifier="LBT"/>
+<org.eventb.core.variable name="internal_element5" org.eventb.core.comment="set of green signals" org.eventb.core.identifier="GRN"/>
+<org.eventb.core.event name="_fnB_kIdnEeOcUOZ5WAG6MB" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="INITIALISATION"/>
+<org.eventb.core.event name="_fnB_kIdnEeOcUOZ5WAG6MC" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_reservation">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="route_reservation"/>
+<org.eventb.core.guard name="_2AMecZSjEeOwFZMDEzeIXg" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt∖ran(rsrtbl) = ∅"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="_fnB_kIdnEeOcUOZ5WAG6MD" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_freeing">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="route_freeing"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="_fnB_kIdnEeOcUOZ5WAG6ME" org.eventb.core.comment="the train enters its route" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_1">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="FRONT_MOVE_1"/>
+<org.eventb.core.guard name="_2ANFgJSjEeOwFZMDEzeIXg" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt∖ran(rsrtbl) = ∅"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="_fnB_kIdnEeOcUOZ5WAG6MF" org.eventb.core.comment="the front of the train moves" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="FRONT_MOVE_2">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="FRONT_MOVE_2"/>
+<org.eventb.core.guard name="_2ANFgZSjEeOwFZMDEzeIXg" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt∖ran(rsrtbl) = ∅"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="_fnB_kIdnEeOcUOZ5WAG6MG" org.eventb.core.comment="the train leaves its route" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_1">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="BACK_MOVE_1"/>
+<org.eventb.core.guard name="_2ANskJSjEeOwFZMDEzeIXg" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt∖ran(rsrtbl) = ∅"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="_fnB_kIdnEeOcUOZ5WAG6MH" org.eventb.core.comment="the back of the train moves" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="BACK_MOVE_2">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="BACK_MOVE_2"/>
+<org.eventb.core.guard name="_2ANskZSjEeOwFZMDEzeIXg" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt∖ran(rsrtbl) = ∅"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="_fnB_kIdnEeOcUOZ5WAG6MI" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="point_positionning">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="point_positionning"/>
+<org.eventb.core.guard name="_2ANskpSjEeOwFZMDEzeIXg" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt∖ran(rsrtbl) = ∅"/>
+</org.eventb.core.event>
+<org.eventb.core.event name="_fnB_kIdnEeOcUOZ5WAG6MJ" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="route_formation">
+<org.eventb.core.refinesEvent name="'" org.eventb.core.target="route_formation"/>
+<org.eventb.core.guard name="_2AOToJSjEeOwFZMDEzeIXg" org.eventb.core.label="POR_route_freeing_impossible" org.eventb.core.predicate="resrt∖ran(rsrtbl) = ∅"/>
+</org.eventb.core.event>
+</org.eventb.core.machineFile>
diff --git a/Train_B_Book/train_ctx0.bcc b/Train_B_Book/train_ctx0.bcc
new file mode 100644
index 0000000000000000000000000000000000000000..77556cc48fe05c82d4941b40661ee1cfe9535aa1
--- /dev/null
+++ b/Train_B_Book/train_ctx0.bcc
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scContextFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase;de.prob.units.mchBase">
+    <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+    <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+    <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+    <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+    <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+    <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.scContextFile>
diff --git a/Train_B_Book/train_ctx0.bpo b/Train_B_Book/train_ctx0.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..980dfee63b20954dab397f2454586f1b09035baa
--- /dev/null
+++ b/Train_B_Book/train_ctx0.bpo
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="axm11/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Axiom" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#HYP."/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧r∈dom(lst)∧lst∈ROUTES ⇸ BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#HYP."/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="axm10/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Axiom" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#HYP\/"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#HYP\/"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="axm9/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Axiom" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#HYP0"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧r∈dom(lst)∧lst∈ROUTES ⇸ BLOCKS∧r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#HYP0"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="axm12/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Axiom" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#HYP1"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧s∈dom(fst)∧s∈dom(lst)∧lst∈ROUTES ⇸ BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#HYP1"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="axm13/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Axiom" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#HYP2"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒r∈dom(lst)∧lst∈ROUTES ⇸ BLOCKS∧s∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧s∈dom(lst)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#HYP2"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="HYP." org.eventb.core.parentSet="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="PRD5" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="PRD6" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="PRD7" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="HYP/" org.eventb.core.parentSet="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#HYP." org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD8" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="HYP0" org.eventb.core.parentSet="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#HYP\/" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="HYP1" org.eventb.core.parentSet="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#HYP0" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="HYP2" org.eventb.core.parentSet="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#HYP1" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD11" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_ctx0.bpo|org.eventb.core.poFile#train_ctx0|org.eventb.core.poPredicateSet#HYP2" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+    </org.eventb.core.poPredicateSet>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_ctx0.bpr b/Train_B_Book/train_ctx0.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..2f9d5c300c99017c4144ffada786dc6d83ec552a
--- /dev/null
+++ b/Train_B_Book/train_ctx0.bpr
@@ -0,0 +1,7539 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.prFile version="1">
+    <org.eventb.core.prProof name="axm11/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p43"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p74">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p75">
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+                                                        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prHyps="p2">
+                                                            <org.eventb.core.prAnte name="'">
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p79"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p80"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p81"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p82"/>
+                                                                <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p78,p4,p3,p6"/>
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prHyps="p1">
+                                                                    <org.eventb.core.prAnte name="'">
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p83"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p84"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p85"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p86"/>
+                                                                        <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p44,p79,p80,p81"/>
+                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="p80">
+                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p87">
+                                                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p87" org.eventb.core.prHyps="">
+                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p88">
+                                                                                        <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p88" org.eventb.core.prHyps=""/>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                            <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                            <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p89">
+                                                <org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p89" org.eventb.core.prHyps="p4"/>
+                                            </org.eventb.core.prAnte>
+                                            <org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p90">
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p90" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p91">
+                                                        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prHyps="p2">
+                                                            <org.eventb.core.prAnte name="'">
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p79"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p80"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p81"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p82"/>
+                                                                <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p78,p4,p3,p6"/>
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prHyps="p1">
+                                                                    <org.eventb.core.prAnte name="'">
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p83"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p84"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p85"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p86"/>
+                                                                        <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p44,p79,p80,p81"/>
+                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p91" org.eventb.core.prHyps="p81">
+                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p87">
+                                                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p87" org.eventb.core.prHyps="">
+                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p88">
+                                                                                        <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p88" org.eventb.core.prHyps=""/>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                            <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                            <org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p92">
+                                                <org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="p3"/>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES·r∈dom(lst)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="nxt∈ROUTES → (dom(rtbl) ⤔ dom(rtbl))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀r⦂ROUTES·r∈dom(fst)"/>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="(∀r⦂ROUTES·r∈dom(fst))∧fst∈ROUTES ⇸ BLOCKS∧(∀r⦂ROUTES·r∈dom(lst))∧lst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="lst∈ran(rtbl) → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="fst∈ran(rtbl) → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="dom(rtbl)={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="nxt∈ran(rtbl) → (dom(rtbl) ⤔ dom(rtbl))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧r∈dom(lst)∧lst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧r∈dom(lst)∧lst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="r∈dom(lst)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="fst∈ROUTES → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="r∈dom(fst)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="ran(rtbl)={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="r∈ROUTES">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="lst∈ROUTES → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="lst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm10/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p4"/>
+                        <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
+                                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
+                                                <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p1">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
+                                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                    <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p13">
+                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p1"/>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="r∈dom(nxt)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="r∈ROUTES">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES·r∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="(∀r⦂ROUTES·r∈dom(nxt))∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm9/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p44"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p74"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p80">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p76"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p77"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p75"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p80" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p83">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p81"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p78"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p82"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p79"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p83" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p85">
+                                                                <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prHyps="p2">
+                                                                    <org.eventb.core.prAnte name="'">
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p86"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p87"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p88"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p89"/>
+                                                                        <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p3,p5,p4,p7"/>
+                                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prHyps="p1">
+                                                                            <org.eventb.core.prAnte name="'">
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p90"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p91"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p92"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p93"/>
+                                                                                <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p45,p86,p87,p88"/>
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p85" org.eventb.core.prHyps="p86">
+                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94">
+                                                                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="">
+                                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p95">
+                                                                                                <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p95" org.eventb.core.prHyps=""/>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                                    <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p96">
+                                                        <org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p96" org.eventb.core.prHyps="p3"/>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p97">
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p97" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p98">
+                                                                <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prHyps="p2">
+                                                                    <org.eventb.core.prAnte name="'">
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p86"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p87"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p88"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p89"/>
+                                                                        <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p3,p5,p4,p7"/>
+                                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prHyps="p1">
+                                                                            <org.eventb.core.prAnte name="'">
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p90"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p91"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p92"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p93"/>
+                                                                                <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p45,p86,p87,p88"/>
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="p88">
+                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94">
+                                                                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="">
+                                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p95">
+                                                                                                <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p95" org.eventb.core.prHyps=""/>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                                    <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p99">
+                                                        <org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p99" org.eventb.core.prHyps="p4"/>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p100">
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p100" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p101">
+                                                                <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prHyps="p2">
+                                                                    <org.eventb.core.prAnte name="'">
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p86"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p87"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p88"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p89"/>
+                                                                        <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p3,p5,p4,p7"/>
+                                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prHyps="p1">
+                                                                            <org.eventb.core.prAnte name="'">
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p90"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p91"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p92"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p93"/>
+                                                                                <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p45,p86,p87,p88"/>
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p101" org.eventb.core.prHyps="p87">
+                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94">
+                                                                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="">
+                                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p95">
+                                                                                                <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p95" org.eventb.core.prHyps=""/>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                                    <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prAnte name="," org.eventb.core.prGoal="p102">
+                                                        <org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p102" org.eventb.core.prHyps="p5"/>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="(∀r⦂ROUTES·r∈dom(nxt))∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧(∀r⦂ROUTES·r∈dom(lst))∧lst∈ROUTES ⇸ BLOCKS∧(∀r⦂ROUTES·r∈dom(fst))∧fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="nxt∈ROUTES → (dom(rtbl) ⤔ dom(rtbl))"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES·r∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·r∈dom(fst)"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="lst∈ran(rtbl) → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="fst∈ran(rtbl) → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧r∈dom(lst)∧lst∈ROUTES ⇸ BLOCKS∧r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="r∈ROUTES">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES·r∈dom(lst)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧r∈dom(lst)∧lst∈ROUTES ⇸ BLOCKS∧r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="dom(rtbl)={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="nxt∈ran(rtbl) → (dom(rtbl) ⤔ dom(rtbl))"/>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="r∈dom(lst)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="fst∈ROUTES → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="r∈dom(fst)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="ran(rtbl)={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="lst∈ROUTES → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="r∈dom(nxt)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="lst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm12/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="s,r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p43"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p75">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p76"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p77"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p74"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p82" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p86">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p83"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p78"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p84"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p80"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p85"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p81"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r,s)" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p87">
+                                                        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                        <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p87" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p89" org.eventb.core.prHyps="p88">
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p89" org.eventb.core.prHyps="">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p90">
+                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prHyps="p2">
+                                                                            <org.eventb.core.prAnte name="'">
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p92"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p93"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p94"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p95"/>
+                                                                                <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p91,p4,p3,p6"/>
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prHyps="p1">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p96"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p97"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p98"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p99"/>
+                                                                                        <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p44,p92,p93,p94"/>
+                                                                                        <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p90" org.eventb.core.prHyps="p93">
+                                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p100">
+                                                                                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p100" org.eventb.core.prHyps="">
+                                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p101">
+                                                                                                        <org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p101" org.eventb.core.prHyps=""/>
+                                                                                                    </org.eventb.core.prAnte>
+                                                                                                </org.eventb.core.prRule>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                                            <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p102">
+                                                                        <org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p102" org.eventb.core.prHyps="p4"/>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p103">
+                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prHyps="p2">
+                                                                            <org.eventb.core.prAnte name="'">
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p92"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p93"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p94"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p95"/>
+                                                                                <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p91,p4,p3,p6"/>
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prHyps="p1">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p96"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p97"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p98"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p99"/>
+                                                                                        <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p44,p92,p93,p94"/>
+                                                                                        <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p103" org.eventb.core.prHyps="p93">
+                                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p104">
+                                                                                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p104" org.eventb.core.prHyps="">
+                                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p101">
+                                                                                                        <org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p101" org.eventb.core.prHyps=""/>
+                                                                                                    </org.eventb.core.prAnte>
+                                                                                                </org.eventb.core.prRule>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                                            <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p105">
+                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prHyps="p2">
+                                                                            <org.eventb.core.prAnte name="'">
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p92"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p93"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p94"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p95"/>
+                                                                                <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p91,p4,p3,p6"/>
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prHyps="p1">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p96"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p97"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p98"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p99"/>
+                                                                                        <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p44,p92,p93,p94"/>
+                                                                                        <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p105" org.eventb.core.prHyps="p94">
+                                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p104">
+                                                                                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p104" org.eventb.core.prHyps="">
+                                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p101">
+                                                                                                        <org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p101" org.eventb.core.prHyps=""/>
+                                                                                                    </org.eventb.core.prAnte>
+                                                                                                </org.eventb.core.prRule>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                                            <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p106">
+                                                                        <org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p106" org.eventb.core.prHyps="p3"/>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="nxt∈ROUTES → (dom(rtbl) ⤔ dom(rtbl))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="lst∈ran(rtbl) → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="fst∈ran(rtbl) → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="s∈dom(lst)">
+            <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧s∈dom(fst)∧s∈dom(lst)∧lst∈ROUTES ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧s∈dom(fst)∧s∈dom(lst)∧lst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="r∈ROUTES">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬r=s⇒r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧s∈dom(fst)∧s∈dom(lst)∧lst∈ROUTES ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧s∈dom(fst)∧s∈dom(lst)∧lst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="dom(rtbl)={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="s∈dom(fst)">
+            <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="nxt∈ran(rtbl) → (dom(rtbl) ⤔ dom(rtbl))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬r=s">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧s∈dom(fst)∧s∈dom(lst)∧lst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="s∈ROUTES">
+            <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="fst∈ROUTES → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="r∈dom(fst)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="ran(rtbl)={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="lst∈ROUTES → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒r∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧s∈dom(fst)∧s∈dom(lst)∧lst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="lst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm13/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="s,r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p43"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p75"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p85">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p74"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p76"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p85" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p90">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p86"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p80"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p87"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p82"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p88"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p83"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p89"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p84"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r,s)" org.eventb.core.prGoal="p90" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p91">
+                                                        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                        <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p91" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="p92">
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94">
+                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prHyps="p2">
+                                                                            <org.eventb.core.prAnte name="'">
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p96"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p97"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p98"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p99"/>
+                                                                                <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p95,p4,p3,p6"/>
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prHyps="p1">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p100"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p101"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p102"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p98" org.eventb.core.prInfHyps="p103"/>
+                                                                                        <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p44,p96,p97,p98"/>
+                                                                                        <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="p98">
+                                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p104">
+                                                                                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p104" org.eventb.core.prHyps="">
+                                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p105">
+                                                                                                        <org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p105" org.eventb.core.prHyps=""/>
+                                                                                                    </org.eventb.core.prAnte>
+                                                                                                </org.eventb.core.prRule>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                                            <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p106">
+                                                                        <org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p106" org.eventb.core.prHyps="p3"/>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p107">
+                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prHyps="p2">
+                                                                            <org.eventb.core.prAnte name="'">
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p96"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p97"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p98"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p99"/>
+                                                                                <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p95,p4,p3,p6"/>
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prHyps="p1">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p100"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p101"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p102"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p98" org.eventb.core.prInfHyps="p103"/>
+                                                                                        <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p44,p96,p97,p98"/>
+                                                                                        <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p107" org.eventb.core.prHyps="p97">
+                                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p108">
+                                                                                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p108" org.eventb.core.prHyps="">
+                                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p105">
+                                                                                                        <org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p105" org.eventb.core.prHyps=""/>
+                                                                                                    </org.eventb.core.prAnte>
+                                                                                                </org.eventb.core.prRule>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                                            <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p109">
+                                                                        <org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p109" org.eventb.core.prHyps="p4"/>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p110">
+                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prHyps="p2">
+                                                                            <org.eventb.core.prAnte name="'">
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p96"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p97"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p98"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p99"/>
+                                                                                <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p95,p4,p3,p6"/>
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prHyps="p1">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p100"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p101"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p102"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p98" org.eventb.core.prInfHyps="p103"/>
+                                                                                        <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p44,p96,p97,p98"/>
+                                                                                        <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p110" org.eventb.core.prHyps="p98">
+                                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p108">
+                                                                                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p108" org.eventb.core.prHyps="">
+                                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p105">
+                                                                                                        <org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p105" org.eventb.core.prHyps=""/>
+                                                                                                    </org.eventb.core.prAnte>
+                                                                                                </org.eventb.core.prRule>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                                            <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒r∈dom(lst)∧lst∈ROUTES ⇸ BLOCKS∧s∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧s∈dom(lst)"/>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="nxt∈ROUTES → (dom(rtbl) ⤔ dom(rtbl))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="lst∈ran(rtbl) → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="fst∈ran(rtbl) → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p110" org.eventb.core.predicate="s∈dom(lst)">
+            <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒r∈dom(lst)∧lst∈ROUTES ⇸ BLOCKS∧s∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧s∈dom(lst)"/>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="r∈ROUTES">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p109" org.eventb.core.predicate="fst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒r∈dom(lst)∧lst∈ROUTES ⇸ BLOCKS∧s∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧s∈dom(lst)"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="dom(rtbl)={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p107" org.eventb.core.predicate="s∈dom(fst)">
+            <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="nxt∈ran(rtbl) → (dom(rtbl) ⤔ dom(rtbl))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬r=s⇒r∈dom(lst)∧lst∈ROUTES ⇸ BLOCKS∧s∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧s∈dom(lst)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬r=s">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="r∈dom(lst)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p108" org.eventb.core.predicate="s∈ROUTES">
+            <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="fst∈ROUTES → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒r∈dom(lst)∧lst∈ROUTES ⇸ BLOCKS∧s∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧s∈dom(lst)"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="ran(rtbl)={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="lst∈ROUTES → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="r∈dom(lst)∧lst∈ROUTES ⇸ BLOCKS∧s∈dom(fst)∧fst∈ROUTES ⇸ BLOCKS∧s∈dom(lst)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="lst∈ROUTES ⇸ BLOCKS"/>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm4/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p72"/>
+                                        <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p4"/>
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="p1">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p75">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p74"/>
+                                                <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p42"/>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="nxt∈ROUTES → (dom(rtbl) ⤔ dom(rtbl))"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="dom(rtbl)={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="nxt∈ran(rtbl) → (dom(rtbl) ⤔ dom(rtbl))"/>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="ran(rtbl)={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm10/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="r,S" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p75">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p73"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p74"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p72"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p76"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p74"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r,S)" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p78">
+                                                        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                        <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(BLOCKS)"/>
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p78" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p80" org.eventb.core.prHyps="p79">
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prHyps="p2">
+                                                                    <org.eventb.core.prAnte name="'">
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p82"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p84"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p86"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p87"/>
+                                                                        <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p81,p83,p85,p4"/>
+                                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prHyps="p1">
+                                                                            <org.eventb.core.prAnte name="'">
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p88"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p89"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p90"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p91"/>
+                                                                                <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p42,p82,p84,p86"/>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="lst∈ROUTES → BLOCKS">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="nxt∈ROUTES → (dom(rtbl) ⤔ dom(rtbl))"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="lst∈ran(rtbl) → dom(rtbl)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="fst∈ran(rtbl) → dom(rtbl)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="dom(rtbl)={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="nxt∈ran(rtbl) → (dom(rtbl) ⤔ dom(rtbl))"/>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="S⊆(nxt(r))[S]">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="fst∈ROUTES → dom(rtbl)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="ran(rtbl)={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="fst∈ROUTES → BLOCKS">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="lst∈ROUTES → dom(rtbl)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm44/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="BLOCKS">
+        <org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p1"/>
+            <org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p2"/>
+            <org.eventb.core.prAnte name="2" org.eventb.core.prGoal="p3"/>
+            <org.eventb.core.prAnte name="3" org.eventb.core.prGoal="p4"/>
+            <org.eventb.core.prAnte name="4" org.eventb.core.prGoal="p5"/>
+            <org.eventb.core.prAnte name="5" org.eventb.core.prGoal="p6"/>
+            <org.eventb.core.prAnte name="6" org.eventb.core.prGoal="p7"/>
+            <org.eventb.core.prAnte name="7" org.eventb.core.prGoal="p8"/>
+            <org.eventb.core.prAnte name="8" org.eventb.core.prGoal="p9"/>
+            <org.eventb.core.prAnte name="9" org.eventb.core.prGoal="p10"/>
+            <org.eventb.core.prAnte name="10" org.eventb.core.prGoal="p11"/>
+            <org.eventb.core.prAnte name="11" org.eventb.core.prGoal="p12"/>
+            <org.eventb.core.prAnte name="12" org.eventb.core.prGoal="p13"/>
+            <org.eventb.core.prAnte name="13" org.eventb.core.prGoal="p14"/>
+            <org.eventb.core.prAnte name="14" org.eventb.core.prGoal="p15"/>
+            <org.eventb.core.prAnte name="15" org.eventb.core.prGoal="p16"/>
+            <org.eventb.core.prAnte name="16" org.eventb.core.prGoal="p17"/>
+            <org.eventb.core.prAnte name="17" org.eventb.core.prGoal="p18"/>
+            <org.eventb.core.prAnte name="18" org.eventb.core.prGoal="p19"/>
+            <org.eventb.core.prAnte name="19" org.eventb.core.prGoal="p20"/>
+            <org.eventb.core.prAnte name="20" org.eventb.core.prGoal="p21"/>
+            <org.eventb.core.prAnte name="21" org.eventb.core.prGoal="p22"/>
+            <org.eventb.core.prAnte name="22" org.eventb.core.prGoal="p23"/>
+            <org.eventb.core.prAnte name="23" org.eventb.core.prGoal="p24"/>
+            <org.eventb.core.prAnte name="24" org.eventb.core.prGoal="p25"/>
+            <org.eventb.core.prAnte name="25" org.eventb.core.prGoal="p26"/>
+            <org.eventb.core.prAnte name="26" org.eventb.core.prGoal="p27"/>
+            <org.eventb.core.prAnte name="27" org.eventb.core.prGoal="p28"/>
+            <org.eventb.core.prAnte name="28" org.eventb.core.prGoal="p29"/>
+            <org.eventb.core.prAnte name="29" org.eventb.core.prGoal="p30"/>
+            <org.eventb.core.prAnte name="30" org.eventb.core.prGoal="p31"/>
+            <org.eventb.core.prAnte name="31" org.eventb.core.prGoal="p32"/>
+            <org.eventb.core.prAnte name="32" org.eventb.core.prGoal="p33"/>
+            <org.eventb.core.prAnte name="33" org.eventb.core.prGoal="p34"/>
+            <org.eventb.core.prAnte name="34" org.eventb.core.prGoal="p35"/>
+            <org.eventb.core.prAnte name="35" org.eventb.core.prGoal="p36"/>
+            <org.eventb.core.prAnte name="36" org.eventb.core.prGoal="p37"/>
+            <org.eventb.core.prAnte name="37" org.eventb.core.prGoal="p38"/>
+            <org.eventb.core.prAnte name="38" org.eventb.core.prGoal="p39"/>
+            <org.eventb.core.prAnte name="39" org.eventb.core.prGoal="p40"/>
+            <org.eventb.core.prAnte name="40" org.eventb.core.prGoal="p41"/>
+            <org.eventb.core.prAnte name="41" org.eventb.core.prGoal="p42"/>
+            <org.eventb.core.prAnte name="42" org.eventb.core.prGoal="p43"/>
+            <org.eventb.core.prAnte name="43" org.eventb.core.prGoal="p44"/>
+            <org.eventb.core.prAnte name="44" org.eventb.core.prGoal="p45"/>
+            <org.eventb.core.prAnte name="45" org.eventb.core.prGoal="p46"/>
+            <org.eventb.core.prAnte name="46" org.eventb.core.prGoal="p47"/>
+            <org.eventb.core.prAnte name="47" org.eventb.core.prGoal="p48"/>
+            <org.eventb.core.prAnte name="48" org.eventb.core.prGoal="p49"/>
+            <org.eventb.core.prAnte name="49" org.eventb.core.prGoal="p50"/>
+            <org.eventb.core.prAnte name="50" org.eventb.core.prGoal="p51"/>
+            <org.eventb.core.prAnte name="51" org.eventb.core.prGoal="p52"/>
+            <org.eventb.core.prAnte name="52" org.eventb.core.prGoal="p53"/>
+            <org.eventb.core.prAnte name="53" org.eventb.core.prGoal="p54"/>
+            <org.eventb.core.prAnte name="54" org.eventb.core.prGoal="p55"/>
+            <org.eventb.core.prAnte name="55" org.eventb.core.prGoal="p56"/>
+            <org.eventb.core.prAnte name="56" org.eventb.core.prGoal="p57"/>
+            <org.eventb.core.prAnte name="57" org.eventb.core.prGoal="p58"/>
+            <org.eventb.core.prAnte name="58" org.eventb.core.prGoal="p59"/>
+            <org.eventb.core.prAnte name="59" org.eventb.core.prGoal="p60"/>
+            <org.eventb.core.prAnte name="60" org.eventb.core.prGoal="p61"/>
+            <org.eventb.core.prAnte name="61" org.eventb.core.prGoal="p62"/>
+            <org.eventb.core.prAnte name="62" org.eventb.core.prGoal="p63"/>
+            <org.eventb.core.prAnte name="63" org.eventb.core.prGoal="p64"/>
+            <org.eventb.core.prAnte name="64" org.eventb.core.prGoal="p65"/>
+            <org.eventb.core.prAnte name="65" org.eventb.core.prGoal="p66"/>
+            <org.eventb.core.prAnte name="66" org.eventb.core.prGoal="p67"/>
+            <org.eventb.core.prAnte name="67" org.eventb.core.prGoal="p68"/>
+            <org.eventb.core.prAnte name="68" org.eventb.core.prGoal="p69"/>
+            <org.eventb.core.prAnte name="69" org.eventb.core.prGoal="p70"/>
+            <org.eventb.core.prAnte name="70" org.eventb.core.prGoal="p71"/>
+            <org.eventb.core.prAnte name="71" org.eventb.core.prGoal="p72"/>
+            <org.eventb.core.prAnte name="72" org.eventb.core.prGoal="p73"/>
+            <org.eventb.core.prAnte name="73" org.eventb.core.prGoal="p74"/>
+            <org.eventb.core.prAnte name="74" org.eventb.core.prGoal="p75"/>
+            <org.eventb.core.prAnte name="75" org.eventb.core.prGoal="p76"/>
+            <org.eventb.core.prAnte name="76" org.eventb.core.prGoal="p77"/>
+            <org.eventb.core.prAnte name="77" org.eventb.core.prGoal="p78"/>
+            <org.eventb.core.prAnte name="78" org.eventb.core.prGoal="p79"/>
+            <org.eventb.core.prAnte name="79" org.eventb.core.prGoal="p80"/>
+            <org.eventb.core.prAnte name="80" org.eventb.core.prGoal="p81"/>
+            <org.eventb.core.prAnte name="81" org.eventb.core.prGoal="p82"/>
+            <org.eventb.core.prAnte name="82" org.eventb.core.prGoal="p83"/>
+            <org.eventb.core.prAnte name="83" org.eventb.core.prGoal="p84"/>
+            <org.eventb.core.prAnte name="84" org.eventb.core.prGoal="p85"/>
+            <org.eventb.core.prAnte name="85" org.eventb.core.prGoal="p86"/>
+            <org.eventb.core.prAnte name="86" org.eventb.core.prGoal="p87"/>
+            <org.eventb.core.prAnte name="87" org.eventb.core.prGoal="p88"/>
+            <org.eventb.core.prAnte name="88" org.eventb.core.prGoal="p89"/>
+            <org.eventb.core.prAnte name="89" org.eventb.core.prGoal="p90"/>
+            <org.eventb.core.prAnte name="90" org.eventb.core.prGoal="p91"/>
+            <org.eventb.core.prAnte name="91" org.eventb.core.prGoal="p92"/>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=L"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬C=D"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=L"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F"/>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬I=K"/>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬K=M"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬G=H"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=M"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=H"/>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬H=J"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬E=G"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=L"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=N"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=G"/>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=N"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=N"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=M"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=N"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=J"/>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬L=N"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=J"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=L"/>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=N"/>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬L=M"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=J"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬D=F"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=M"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=L"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=K"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C"/>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=M"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=G"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=M"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=M"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬C=E"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=J"/>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬J=K"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=N"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=I"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=K"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=F"/>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=L"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=H"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=J"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=D"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=N"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=K"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=I"/>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬K=L"/>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=N"/>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬G=I"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬F=H"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=L"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=E"/>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=M"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=M"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=K"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=J"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=K"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=K"/>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬M=N"/>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬J=L"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=F"/>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬H=I"/>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬I=J"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=G"/>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=M"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=I"/>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=L"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬E=F"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=J"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=L"/>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=M"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=N"/>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=N"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=K"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=I"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=H"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=H"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=C"/>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=K"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=I"/>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=N"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬F=G"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬D=E"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm45/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="ROUTES">
+        <org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="0">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93"/>
+                <org.eventb.core.prRule name="org.eventb.core.seqprover.partitionRewrites" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p94"/>
+                    <org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p95"/>
+                    <org.eventb.core.prAnte name="2" org.eventb.core.prGoal="p96"/>
+                    <org.eventb.core.prAnte name="3" org.eventb.core.prGoal="p97"/>
+                    <org.eventb.core.prAnte name="4" org.eventb.core.prGoal="p98"/>
+                    <org.eventb.core.prAnte name="5" org.eventb.core.prGoal="p99"/>
+                    <org.eventb.core.prAnte name="6" org.eventb.core.prGoal="p100"/>
+                    <org.eventb.core.prAnte name="7" org.eventb.core.prGoal="p101"/>
+                    <org.eventb.core.prAnte name="8" org.eventb.core.prGoal="p102"/>
+                    <org.eventb.core.prAnte name="9" org.eventb.core.prGoal="p103"/>
+                    <org.eventb.core.prAnte name="10" org.eventb.core.prGoal="p104"/>
+                    <org.eventb.core.prAnte name="11" org.eventb.core.prGoal="p105"/>
+                    <org.eventb.core.prAnte name="12" org.eventb.core.prGoal="p106"/>
+                    <org.eventb.core.prAnte name="13" org.eventb.core.prGoal="p107"/>
+                    <org.eventb.core.prAnte name="14" org.eventb.core.prGoal="p108"/>
+                    <org.eventb.core.prAnte name="15" org.eventb.core.prGoal="p109"/>
+                    <org.eventb.core.prAnte name="16" org.eventb.core.prGoal="p110"/>
+                    <org.eventb.core.prAnte name="17" org.eventb.core.prGoal="p111"/>
+                    <org.eventb.core.prAnte name="18" org.eventb.core.prGoal="p112"/>
+                    <org.eventb.core.prAnte name="19" org.eventb.core.prGoal="p113"/>
+                    <org.eventb.core.prAnte name="20" org.eventb.core.prGoal="p114"/>
+                    <org.eventb.core.prAnte name="21" org.eventb.core.prGoal="p115"/>
+                    <org.eventb.core.prAnte name="22" org.eventb.core.prGoal="p116"/>
+                    <org.eventb.core.prAnte name="23" org.eventb.core.prGoal="p117"/>
+                    <org.eventb.core.prAnte name="24" org.eventb.core.prGoal="p118"/>
+                    <org.eventb.core.prAnte name="25" org.eventb.core.prGoal="p119"/>
+                    <org.eventb.core.prAnte name="26" org.eventb.core.prGoal="p120"/>
+                    <org.eventb.core.prAnte name="27" org.eventb.core.prGoal="p121"/>
+                    <org.eventb.core.prAnte name="28" org.eventb.core.prGoal="p122"/>
+                    <org.eventb.core.prAnte name="29" org.eventb.core.prGoal="p123"/>
+                    <org.eventb.core.prAnte name="30" org.eventb.core.prGoal="p124"/>
+                    <org.eventb.core.prAnte name="31" org.eventb.core.prGoal="p125"/>
+                    <org.eventb.core.prAnte name="32" org.eventb.core.prGoal="p126"/>
+                    <org.eventb.core.prAnte name="33" org.eventb.core.prGoal="p127"/>
+                    <org.eventb.core.prAnte name="34" org.eventb.core.prGoal="p128"/>
+                    <org.eventb.core.prAnte name="35" org.eventb.core.prGoal="p129"/>
+                    <org.eventb.core.prAnte name="36" org.eventb.core.prGoal="p130"/>
+                    <org.eventb.core.prAnte name="37" org.eventb.core.prGoal="p131"/>
+                    <org.eventb.core.prAnte name="38" org.eventb.core.prGoal="p132"/>
+                    <org.eventb.core.prAnte name="39" org.eventb.core.prGoal="p133"/>
+                    <org.eventb.core.prAnte name="40" org.eventb.core.prGoal="p134"/>
+                    <org.eventb.core.prAnte name="41" org.eventb.core.prGoal="p135"/>
+                    <org.eventb.core.prAnte name="42" org.eventb.core.prGoal="p136"/>
+                    <org.eventb.core.prAnte name="43" org.eventb.core.prGoal="p137"/>
+                    <org.eventb.core.prAnte name="44" org.eventb.core.prGoal="p138"/>
+                    <org.eventb.core.prAnte name="45" org.eventb.core.prGoal="p139"/>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=K">
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=M">
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R6"/>
+        <org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R7=R9"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬D=N">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R5"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=J">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=L">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=J">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R8=R10"/>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R2=R4"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=J">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬L=M">
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R10"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=L">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R7"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=K">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=M">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬F=N">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬J=K">
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=L">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R9"/>
+        <org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R6"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=K">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬K=L">
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬I=N">
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R8"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=L">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R9"/>
+        <org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R9"/>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R2=R3"/>
+        <org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R3=R5"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=M">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=K">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}"/>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="¬R1=R2"/>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="¬M=N">
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R5=R7"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R10"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R10"/>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬I=J">
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R4=R5"/>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=L">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=L">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R6=R8"/>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R4"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})"/>
+        <org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R8"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=K">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R9=R10"/>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R10"/>
+        <org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R7"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=L">
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R5=R6"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=L">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R7"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=M">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=J">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=L">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬E=N">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R6=R7"/>
+        <org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R10"/>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬G=N">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬B=N">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=M">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R8=R9"/>
+        <org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R9"/>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬L=N">
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R8"/>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬J=N">
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=M">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R9"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=M">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=M">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=J">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R9"/>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R8"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R10"/>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=K">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R5"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=J">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R4=R6"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬A=N">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R8"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R10"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=M">
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬R1=R3"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=K">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=J">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=K">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R3=R4"/>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=L">
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R6"/>
+        <org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R7=R8"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=M">
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=J">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=M">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬C=N">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬H=N">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=K">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬K=N">
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R7"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm1/THM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="org.eventb.core.seqprover.typeRewrites:1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p1">
+                <org.eventb.core.prRule name="org.eventb.core.seqprover.trueGoal" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p1" org.eventb.core.prHyps=""/>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="⊤"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm2/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p70"/>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="dom(rtbl)={A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H"/>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm3/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p70"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prHyps="p1">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p71"/>
+                                        <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p4"/>
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p41">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p72"/>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R8"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R8"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R4"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R5"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R6"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R4"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R5"/>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="dom(rtbl)={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R8"/>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R7=R8"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R8"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R7"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R5"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R8"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R4"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R7"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R7"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="ran(rtbl)={R1,R2,R3,R4,R5,R6,R7,R8}"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R6"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R2"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R7"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R3"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R6"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R7"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R6"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R7"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R8"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R5"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R6"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R3"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm5/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p75">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p74"/>
+                                        <org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p72,p4"/>
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="p1">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p78">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p77"/>
+                                                <org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p42,p73"/>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="nxt∈ROUTES → (dom(rtbl) ⤔ dom(rtbl))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="fst∈ran(rtbl) → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="dom(rtbl)={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="nxt∈ran(rtbl) → (dom(rtbl) ⤔ dom(rtbl))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="fst∈ROUTES → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="ran(rtbl)={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm6/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p76"/>
+                                        <org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p72,p74,p4"/>
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="p1">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p81">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p78"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p79"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p80"/>
+                                                <org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p73,p75"/>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="nxt∈ROUTES → (dom(rtbl) ⤔ dom(rtbl))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="lst∈ran(rtbl) → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="fst∈ran(rtbl) → dom(rtbl)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="dom(rtbl)={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="nxt∈ran(rtbl) → (dom(rtbl) ⤔ dom(rtbl))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="fst∈ROUTES → dom(rtbl)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="ran(rtbl)={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="fst∈ROUTES → BLOCKS">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="lst∈ROUTES → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm7/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0,p1" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p70"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prHyps="p1">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p77"/>
+                                        <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p71,p73,p75,p3"/>
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prHyps="p0">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p78"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p79"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p80"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
+                                                <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p41,p72,p74,p76"/>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="lst∈ROUTES → BLOCKS">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="nxt∈ROUTES → (dom(rtbl) ⤔ dom(rtbl))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="lst∈ran(rtbl) → dom(rtbl)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="fst∈ran(rtbl) → dom(rtbl)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="dom(rtbl)={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="nxt∈ran(rtbl) → (dom(rtbl) ⤔ dom(rtbl))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="fst∈ROUTES → dom(rtbl)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="ran(rtbl)={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="fst∈ROUTES → BLOCKS">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="lst∈ROUTES → dom(rtbl)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm8/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0,p1" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p70"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prHyps="p1">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p77"/>
+                                        <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p71,p73,p75,p3"/>
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prHyps="p0">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p78"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p79"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p80"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
+                                                <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p41,p72,p74,p76"/>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="lst∈ROUTES → BLOCKS">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="nxt∈ROUTES → (dom(rtbl) ⤔ dom(rtbl))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="lst∈ran(rtbl) → dom(rtbl)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="fst∈ran(rtbl) → dom(rtbl)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="dom(rtbl)={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="nxt∈ran(rtbl) → (dom(rtbl) ⤔ dom(rtbl))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="fst∈ROUTES → dom(rtbl)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="ran(rtbl)={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="fst∈ROUTES → BLOCKS">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="lst∈ROUTES → dom(rtbl)">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm11/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p71">
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p72"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p74">
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p75">
+                                                        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prHyps="p2">
+                                                            <org.eventb.core.prAnte name="'">
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p77"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p79"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p81"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p82"/>
+                                                                <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p76,p78,p80,p4"/>
+                                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prHyps="p1">
+                                                                    <org.eventb.core.prAnte name="'">
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p83"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p84"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p85"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p86"/>
+                                                                        <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p42,p77,p79,p81"/>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="nxt∈ROUTES → (dom(rtbl) ⤔ dom(rtbl))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="lst∈ran(rtbl) → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="fst∈ran(rtbl) → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="dom(rtbl)={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="nxt∈ran(rtbl) → (dom(rtbl) ⤔ dom(rtbl))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="fst∈ROUTES → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="ran(rtbl)={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="lst∈ROUTES → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm9/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p73"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p74"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p76"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p72"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p80">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p78"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p75"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p79"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p76"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p80" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p81">
+                                                        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prHyps="p2">
+                                                            <org.eventb.core.prAnte name="'">
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p83"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p85"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p87"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p88"/>
+                                                                <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p82,p84,p86,p4"/>
+                                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prHyps="p1">
+                                                                    <org.eventb.core.prAnte name="'">
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p89"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p90"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p91"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p92"/>
+                                                                        <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p42,p83,p85,p87"/>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="nxt∈ROUTES → (dom(rtbl) ⤔ dom(rtbl))"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="lst∈ran(rtbl) → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="fst∈ran(rtbl) → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="dom(rtbl)={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="nxt∈ran(rtbl) → (dom(rtbl) ⤔ dom(rtbl))"/>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="fst∈ROUTES → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="ran(rtbl)={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="lst∈ROUTES → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm12/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="s,r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p80">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p74"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p75"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p77"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p72"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p80" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p76"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p82"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p78"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p83"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p79"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r,s)" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p85">
+                                                        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                        <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p85" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p87" org.eventb.core.prHyps="p86">
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prHyps="p2">
+                                                                    <org.eventb.core.prAnte name="'">
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p89"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p91"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p93"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p94"/>
+                                                                        <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p88,p90,p92,p4"/>
+                                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prHyps="p1">
+                                                                            <org.eventb.core.prAnte name="'">
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p95"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p96"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p97"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p98"/>
+                                                                                <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p42,p89,p91,p93"/>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="nxt∈ROUTES → (dom(rtbl) ⤔ dom(rtbl))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="lst∈ran(rtbl) → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="fst∈ran(rtbl) → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="dom(rtbl)={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="nxt∈ran(rtbl) → (dom(rtbl) ⤔ dom(rtbl))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬r=s">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="fst∈ROUTES → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="ran(rtbl)={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="lst∈ROUTES → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm13/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="s,r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p75">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p71"/>
+                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
+                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p83">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p76"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p77"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p79"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p72"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p74"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p83" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p88">
+                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p84"/>
+                                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p78"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p85"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p80"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p86"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p81"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p87"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p82"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r,s)" org.eventb.core.prGoal="p88" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p89">
+                                                        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                        <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p89" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p91" org.eventb.core.prHyps="p90">
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with dom(rtbl)=BLOCKS" org.eventb.core.prHyps="p2">
+                                                                    <org.eventb.core.prAnte name="'">
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p93"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p95"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p97"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p98"/>
+                                                                        <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p92,p94,p96,p4"/>
+                                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ran(rtbl)=ROUTES" org.eventb.core.prHyps="p1">
+                                                                            <org.eventb.core.prAnte name="'">
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p99"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p100"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p101"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p102"/>
+                                                                                <org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p42,p93,p95,p97"/>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="nxt∈ROUTES → (dom(rtbl) ⤔ dom(rtbl))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="lst∈ran(rtbl) → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="fst∈ran(rtbl) → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="dom(rtbl)=BLOCKS"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="fst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="lst∈ROUTES → BLOCKS"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="ran(rtbl)=ROUTES"/>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="dom(rtbl)={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="nxt∈ran(rtbl) → (dom(rtbl) ⤔ dom(rtbl))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬r=s">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="s" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="fst∈ROUTES → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="ran(rtbl)={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="lst∈ROUTES → dom(rtbl)"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
+    </org.eventb.core.prProof>
+</org.eventb.core.prFile>
diff --git a/Train_B_Book/train_ctx0.bps b/Train_B_Book/train_ctx0.bps
new file mode 100644
index 0000000000000000000000000000000000000000..2c5942ab19b165d78e80a00f5ec4ce8e7fc6fa2c
--- /dev/null
+++ b/Train_B_Book/train_ctx0.bps
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.psFile>
+    <org.eventb.core.psStatus name="axm11/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="axm10/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="axm9/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="axm12/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="axm13/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+</org.eventb.core.psFile>
diff --git a/Train_B_Book/train_ctx0.buc b/Train_B_Book/train_ctx0.buc
new file mode 100644
index 0000000000000000000000000000000000000000..bfed8549ff0266aca0ab60222a6e0e6481b25e63
--- /dev/null
+++ b/Train_B_Book/train_ctx0.buc
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.contextFile org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase;de.prob.units.mchBase" org.eventb.texttools.text_lastmodified="1390838812830" org.eventb.texttools.text_representation="context train_ctx0&#10;&#10;sets BLOCKS ROUTES&#10;&#10;constants rtbl nxt fst lst&#10;&#10;axioms&#10;&#10;   @axm1 rtbl ∈ BLOCKS ↔ ROUTES&#10;   @axm2 dom(rtbl) = BLOCKS&#10;   @axm3 ran(rtbl) = ROUTES&#10;   @axm4 nxt ∈ ROUTES → (BLOCKS ⤔ BLOCKS)&#10;   @axm5 fst ∈ ROUTES → BLOCKS&#10;   @axm6 lst ∈ ROUTES → BLOCKS&#10;   @axm7 fst∼ ⊆ rtbl // each first block is part of the corresponding route&#10;   @axm8 lst∼ ⊆ rtbl // each last block is part of the corresponding route&#10;   @axm11 ∀r·r∈ROUTES ⇒ fst(r)≠lst(r) // first and last block of a route are distinct&#10;   @axm10 ∀r·r∈ROUTES ⇒ (∀S·S⊆ran(r) ∧ S⊆nxt(r)[S] ⇒ S=∅) // ENV-11 : no cycles; replaced BLOCKS by ran(r) for ProB&#10;   @axm9 ∀r·r∈ROUTES ⇒ nxt(r) ∈ rtbl∼[{r}]∖{lst(r)} ⤖ rtbl∼[{r}]∖{fst(r)} // ENV-10: continuous path from first to last&#10;   @axm12 ∀r,s·r∈ROUTES ∧ s∈ROUTES ∧ r≠s ⇒ fst(r)∉rtbl∼[{s}]∖{fst(s),lst(s)} // ENV-8: first block cannot be in middle of other route&#10;   @axm13 ∀r,s·r∈ROUTES ∧ s∈ROUTES ∧ r≠s ⇒ lst(r)∉rtbl∼[{s}]∖{fst(s),lst(s)} // ENV-9: last block cannot be in middle of other route&#10;&#10;end&#10;" version="3">
+<org.eventb.core.constant name="internal_cst1" org.eventb.core.identifier="rtbl"/>
+<org.eventb.core.constant name="internal_cst2" org.eventb.core.identifier="nxt"/>
+<org.eventb.core.constant name="internal_cst3" org.eventb.core.identifier="fst"/>
+<org.eventb.core.constant name="internal_cst4" org.eventb.core.identifier="lst"/>
+<org.eventb.core.carrierSet name="internal_axm13}" org.eventb.core.identifier="BLOCKS"/>
+<org.eventb.core.carrierSet name="internal_axm145" org.eventb.core.identifier="ROUTES"/>
+<org.eventb.core.axiom name="internal_axm1A" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl ∈ BLOCKS ↔ ROUTES"/>
+<org.eventb.core.axiom name="internal_axm2A" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl) = BLOCKS"/>
+<org.eventb.core.axiom name="internal_axm3A" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl) = ROUTES"/>
+<org.eventb.core.axiom name="internal_axm4A" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt ∈ ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+<org.eventb.core.axiom name="internal_axm5A" org.eventb.core.label="axm5" org.eventb.core.predicate="fst ∈ ROUTES → BLOCKS"/>
+<org.eventb.core.axiom name="internal_axm6A" org.eventb.core.label="axm6" org.eventb.core.predicate="lst ∈ ROUTES → BLOCKS"/>
+<org.eventb.core.axiom name="internal_axm7A" org.eventb.core.comment="each first block is part of the corresponding route" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼ ⊆ rtbl"/>
+<org.eventb.core.axiom name="internal_axm8A" org.eventb.core.comment="each last block is part of the corresponding route" org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼ ⊆ rtbl"/>
+<org.eventb.core.axiom name="internal_axm11A" org.eventb.core.comment="first and last block of a route are distinct" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r·r∈ROUTES ⇒ fst(r)≠lst(r)"/>
+<org.eventb.core.axiom name="internal_axm10A" org.eventb.core.comment="ENV-11 : no cycles; replaced BLOCKS by ran(r) for ProB" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r·r∈ROUTES ⇒ (∀S·S⊆ran(nxt(r)) ∧ S⊆nxt(r)[S] ⇒ S=∅)"/>
+<org.eventb.core.axiom name="internal_axm9A" org.eventb.core.comment="ENV-10: continuous path from first to last" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r·r∈ROUTES ⇒ nxt(r) ∈ rtbl∼[{r}]∖{lst(r)} ⤖ rtbl∼[{r}]∖{fst(r)}"/>
+<org.eventb.core.axiom name="internal_axm12A" org.eventb.core.comment="ENV-8: first block cannot be in middle of other route" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r,s·r∈ROUTES ∧ s∈ROUTES ∧ r≠s ⇒ fst(r)∉rtbl∼[{s}]∖{fst(s),lst(s)}"/>
+<org.eventb.core.axiom name="internal_axm13A" org.eventb.core.comment="ENV-9: last block cannot be in middle of other route" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r,s·r∈ROUTES ∧ s∈ROUTES ∧ r≠s ⇒ lst(r)∉rtbl∼[{s}]∖{fst(s),lst(s)}"/>
+</org.eventb.core.contextFile>
diff --git a/Train_B_Book/train_ctx0_beebook.bcc b/Train_B_Book/train_ctx0_beebook.bcc
new file mode 100644
index 0000000000000000000000000000000000000000..27d36e70207526e65fb9279e3bc7e6e3c60fc587
--- /dev/null
+++ b/Train_B_Book/train_ctx0_beebook.bcc
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scContextFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase;de.prob.units.mchBase">
+    <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.extendsContext#'"/>
+    <org.eventb.core.scInternalContext name="train_ctx0">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm44" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="train_ctx2" org.eventb.core.label="axm45" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAYdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="train_ctx3" org.eventb.core.label="compute_rtbl_from_nxt" org.eventb.core.predicate="rtbl={b⦂BLOCKS,r⦂ROUTES·r∈dom(nxt)∧(b∈dom(nxt(r))∨b∈ran(nxt(r))) ∣ b ↦ r}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_tx3w0YdrEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="train_ctx4" org.eventb.core.label="axm40" org.eventb.core.predicate="nxt={R1 ↦ {L ↦ A,A ↦ B,B ↦ C},R2 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ E,E ↦ F,F ↦ G},R3 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ K,K ↦ J,J ↦ N},R4 ↦ {M ↦ H,H ↦ I,I ↦ K,K ↦ F,F ↦ G},R5 ↦ {M ↦ H,H ↦ I,I ↦ J,J ↦ N},R6 ↦ {C ↦ B,B ↦ A,A ↦ L},R7 ↦ {G ↦ F,F ↦ E,E ↦ D,D ↦ B,B ↦ A,A ↦ L},R8 ↦ {N ↦ J,J ↦ K,K ↦ D,D ↦ B,B ↦ A,A ↦ L},R9 ↦ {G ↦ F,F ↦ K,K ↦ I,I ↦ H,H ↦ M},R10 ↦ {N ↦ J,J ↦ I,I ↦ H,H ↦ M}}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LA4doEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="train_ctx5" org.eventb.core.label="axm41" org.eventb.core.predicate="fst={R1 ↦ L,R2 ↦ L,R3 ↦ L,R4 ↦ M,R5 ↦ M,R6 ↦ C,R7 ↦ G,R8 ↦ N,R9 ↦ G,R10 ↦ N}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LBIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="train_ctx6" org.eventb.core.label="axm42" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ G,R3 ↦ N,R4 ↦ G,R5 ↦ N,R6 ↦ L,R7 ↦ L,R8 ↦ L,R9 ↦ M,R10 ↦ M}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5yEIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scConstant name="A" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwIdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="B" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwYdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="C" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwodoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="D" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uw4doEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="E" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uxIdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="F" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uxYdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="G" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="H" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="I" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0odoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="J" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V04doEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="K" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V1IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="L" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V1YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="M" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="N" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="R10" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j9YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    <org.eventb.core.scConstant name="R1" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384odoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    <org.eventb.core.scConstant name="R2" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3844doEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    <org.eventb.core.scConstant name="R3" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj385IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    <org.eventb.core.scConstant name="R4" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj385YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    <org.eventb.core.scConstant name="R5" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    <org.eventb.core.scConstant name="R6" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    <org.eventb.core.scConstant name="R7" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8odoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    <org.eventb.core.scConstant name="R8" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j84doEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    <org.eventb.core.scConstant name="R9" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j9IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.scContextFile>
diff --git a/Train_B_Book/train_ctx0_beebook.bpo b/Train_B_Book/train_ctx0_beebook.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..c546e89e979d879622889294f03c79d5b0bc3f19
--- /dev/null
+++ b/Train_B_Book/train_ctx0_beebook.bpo
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTET" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEU" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEV" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEW" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEX" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEY" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEZ" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="ROUTE[" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+        <org.eventb.core.poPredicate name="ROUTE\" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poPredicate name="ROUTE]" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poPredicate name="ROUTE^" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poPredicate name="ROUTE_" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poPredicate name="ROUTE`" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+        <org.eventb.core.poIdentifier name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="J" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="K" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="L" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="M" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="N" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="R10" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R2" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R3" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R4" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R5" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R6" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R7" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R8" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R9" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="compute_rtbl_from_nxt/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Axiom" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_ctx0_beebook.bpo|org.eventb.core.poFile#train_ctx0_beebook|org.eventb.core.poPredicateSet#HYPtrain_ctx2"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·r∈dom(nxt)⇒nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧(b∈dom(nxt(r))∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)))" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_tx3w0YdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_tx3w0YdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_ctx0_beebook.bpo|org.eventb.core.poFile#train_ctx0_beebook|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_ctx0_beebook.bpo|org.eventb.core.poFile#train_ctx0_beebook|org.eventb.core.poPredicateSet#HYPtrain_ctx2"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="HYPtrain_ctx2" org.eventb.core.parentSet="/Train/train_ctx0_beebook.bpo|org.eventb.core.poFile#train_ctx0_beebook|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAYdoEeOcUOZ5WAG6MA"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_ctx0_beebook.bpo|org.eventb.core.poFile#train_ctx0_beebook|org.eventb.core.poPredicateSet#HYPtrain_ctx2" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="rtbl={b⦂BLOCKS,r⦂ROUTES·r∈dom(nxt)∧(b∈dom(nxt(r))∨b∈ran(nxt(r))) ∣ b ↦ r}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_tx3w0YdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="nxt={R1 ↦ {L ↦ A,A ↦ B,B ↦ C},R2 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ E,E ↦ F,F ↦ G},R3 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ K,K ↦ J,J ↦ N},R4 ↦ {M ↦ H,H ↦ I,I ↦ K,K ↦ F,F ↦ G},R5 ↦ {M ↦ H,H ↦ I,I ↦ J,J ↦ N},R6 ↦ {C ↦ B,B ↦ A,A ↦ L},R7 ↦ {G ↦ F,F ↦ E,E ↦ D,D ↦ B,B ↦ A,A ↦ L},R8 ↦ {N ↦ J,J ↦ K,K ↦ D,D ↦ B,B ↦ A,A ↦ L},R9 ↦ {G ↦ F,F ↦ K,K ↦ I,I ↦ H,H ↦ M},R10 ↦ {N ↦ J,J ↦ I,I ↦ H,H ↦ M}}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LA4doEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="fst={R1 ↦ L,R2 ↦ L,R3 ↦ L,R4 ↦ M,R5 ↦ M,R6 ↦ C,R7 ↦ G,R8 ↦ N,R9 ↦ G,R10 ↦ N}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LBIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="PRD5" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ G,R3 ↦ N,R4 ↦ G,R5 ↦ N,R6 ↦ L,R7 ↦ L,R8 ↦ L,R9 ↦ M,R10 ↦ M}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5yEIdoEeOcUOZ5WAG6MA"/>
+    </org.eventb.core.poPredicateSet>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_ctx0_beebook.bpr b/Train_B_Book/train_ctx0_beebook.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..eaed4f7c1d08d67a5a3e15daec8deec7d5425b4c
--- /dev/null
+++ b/Train_B_Book/train_ctx0_beebook.bpr
@@ -0,0 +1,784 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.prFile version="1">
+    <org.eventb.core.prProof name="axm14/THM"/>
+    <org.eventb.core.prProof name="leuschel/WD"/>
+    <org.eventb.core.prProof name="compute_rtbl_from_nxt/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="b,r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94"/>
+                <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p95" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139,p140,p141"/>
+                        <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139,p140,p141"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p142" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p143"/>
+                                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p144" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p145"/>
+                                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p146" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p147"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p148"/>
+                                        <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p149" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p150"/>
+                                        <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p151" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p152"/>
+                                        <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p143" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p153"/>
+                                        <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p145" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p154"/>
+                                        <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p147" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p155"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p150" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p156"/>
+                                                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p152" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p157"/>
+                                                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p153" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p158"/>
+                                                <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p154" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p159"/>
+                                                <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p155" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p160"/>
+                                                <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees b,r)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p161">
+                                                        <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+                                                        <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                        <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p161" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p163" org.eventb.core.prHyps="p162">
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p163" org.eventb.core.prHyps="">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p164">
+                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p164" org.eventb.core.prHyps="p1"/>
+                                                                    </org.eventb.core.prAnte>
+                                                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p165">
+                                                                        <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p165" org.eventb.core.prHyps="p162">
+                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p166">
+                                                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p166" org.eventb.core.prHyps="">
+                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p167"/>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=K">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=L">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R7=R9">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=J">
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬F=M">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬J=N">
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p158" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p167" org.eventb.core.predicate="b∈dom(nxt(r))∨nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬B=M">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p155" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬F=N">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬B=N">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=J">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬J=M">
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p148" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p159" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=J">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=L">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R3=R9">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R3=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p150" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R7=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=L">
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p161" org.eventb.core.predicate="r∈dom(nxt)⇒nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧(b∈dom(nxt(r))∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)))">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=K">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=K">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=L">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=L">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R8=R9">
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=J">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="¬M=N">
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬I=N">
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬A=M">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬E=M">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p162" org.eventb.core.predicate="r∈dom(nxt)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬I=M">
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬E=N">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬A=N">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=J">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R4=R9">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R2=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p163" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧(b∈dom(nxt(r))∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)))">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=K">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p157" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R6=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·r∈dom(nxt)⇒nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧(b∈dom(nxt(r))∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)))"/>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=L">
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=L">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=L">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=K">
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=J">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="¬L=N">
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬D=M">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬H=N">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p166" org.eventb.core.predicate="b∈dom(nxt(r))∨(⊤∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS))">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p145" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p160" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p164" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬H=M">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=J">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬D=N">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬L=M">
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R1=R10">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R5=R9">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R1=R9">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p154" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p141" org.eventb.core.predicate="¬R9=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=K">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p149" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=K">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=L">
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R5=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p153" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=L">
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=K">
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p165" org.eventb.core.predicate="b∈dom(nxt(r))∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS))">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p156" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬K=N">
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬G=N">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬C=M">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬G=M">
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=J">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬K=M">
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=J">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬C=N">
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R6=R9">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R2=R9">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p146" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p140" org.eventb.core.predicate="¬R8=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R4=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=K">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=K">
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=L">
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+    </org.eventb.core.prProof>
+</org.eventb.core.prFile>
diff --git a/Train_B_Book/train_ctx0_beebook.bps b/Train_B_Book/train_ctx0_beebook.bps
new file mode 100644
index 0000000000000000000000000000000000000000..3fbf1d1374818287e73af2aec570b13fe2b89ceb
--- /dev/null
+++ b/Train_B_Book/train_ctx0_beebook.bps
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.psFile>
+    <org.eventb.core.psStatus name="compute_rtbl_from_nxt/WD" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+</org.eventb.core.psFile>
diff --git a/Train_B_Book/train_ctx0_beebook.buc b/Train_B_Book/train_ctx0_beebook.buc
new file mode 100644
index 0000000000000000000000000000000000000000..ea27cdd7ce02a70ee56997f2ce88a2afa114e701
--- /dev/null
+++ b/Train_B_Book/train_ctx0_beebook.buc
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.contextFile org.eventb.core.comment="contains data for the sample track layout in the Bee Book by Abrial" org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase;de.prob.units.mchBase" org.eventb.texttools.text_lastmodified="1390838243858" org.eventb.texttools.text_representation="context train_ctx0_beebook // contains data for the sample track layout in the Bee Book by Abrial&#10; extends train_ctx0&#10;constants A B C D E F G H I J K L M N R1 R2 R3 R4 R5 R6 R7 R8 R9 R10&#10;&#10;axioms&#10;  @axm44 partition(BLOCKS, {A}, {B}, {C}, {D}, {E}, {F}, {G}, {H}, {I},{J}, {K},{L},{M},{N})&#10;  @axm45 partition(ROUTES, {R1}, {R2}, {R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})&#10;&#10;&#10;  @compute_rtbl_from_nxt rtbl = {b↦r∣ r∈dom(nxt) ∧ (b∈dom(nxt(r)) ∨ b∈ran(nxt(r)))}&#10;  @axm40 nxt = {(R1 ↦ {L↦A, A↦B,B↦C}),&#10;    (R2 ↦ {L↦A, A↦B,B↦D,D↦E,E↦F, F↦G}),&#10;    (R3 ↦ {L↦A, A↦B,B↦D,D↦K,K↦J, J↦N}),&#10;    (R4 ↦ {M↦H,H↦I,I↦K,K↦F,F↦G}),&#10;    (R5 ↦ {M↦H,H↦I,I↦J,J↦N}),&#10;    (R6 ↦ {C↦B,B↦A,A↦L}),&#10;    (R7 ↦ {G↦F,F↦E,E↦D,D↦B,B↦A,A↦L}),&#10;    (R8 ↦ {N↦J,J↦K,K↦D,D↦B,B↦A,A↦L}),&#10;    (R9 ↦ {G↦F,F↦K,K↦I,I↦H,H↦M}),&#10;    (R10 ↦ {N↦J,J↦I,I↦H,H↦M})}&#10;  @axm41 fst = {(R1 ↦ L),(R2 ↦ L),(R3 ↦ L),&#10;                (R4 ↦ M),(R5 ↦ M),&#10;                (R6 ↦ C),&#10;                (R7 ↦ G),(R8 ↦ N),&#10;                (R9 ↦ G),(R10 ↦ N)}&#10;  @axm42 lst = {(R1 ↦ C),(R2 ↦ G),(R3 ↦ N),&#10;                (R4 ↦ G),(R5 ↦ N),(R6 ↦ L),&#10;                (R7 ↦ L),(R8 ↦ L),&#10;                (R9 ↦ M),(R10 ↦ M)}&#10;end&#10;" version="3">
+<org.eventb.core.extendsContext name="'" org.eventb.core.target="train_ctx0"/>
+<org.eventb.core.constant name="_uj2uwIdoEeOcUOZ5WAG6MA" org.eventb.core.identifier="A"/>
+<org.eventb.core.constant name="_uj2uwYdoEeOcUOZ5WAG6MA" org.eventb.core.identifier="B"/>
+<org.eventb.core.constant name="_uj2uwodoEeOcUOZ5WAG6MA" org.eventb.core.identifier="C"/>
+<org.eventb.core.constant name="_uj2uw4doEeOcUOZ5WAG6MA" org.eventb.core.identifier="D"/>
+<org.eventb.core.constant name="_uj2uxIdoEeOcUOZ5WAG6MA" org.eventb.core.identifier="E"/>
+<org.eventb.core.constant name="_uj2uxYdoEeOcUOZ5WAG6MA" org.eventb.core.identifier="F"/>
+<org.eventb.core.constant name="_uj3V0IdoEeOcUOZ5WAG6MA" org.eventb.core.identifier="G"/>
+<org.eventb.core.constant name="_uj3V0YdoEeOcUOZ5WAG6MA" org.eventb.core.identifier="H"/>
+<org.eventb.core.constant name="_uj3V0odoEeOcUOZ5WAG6MA" org.eventb.core.identifier="I"/>
+<org.eventb.core.constant name="_uj3V04doEeOcUOZ5WAG6MA" org.eventb.core.identifier="J"/>
+<org.eventb.core.constant name="_uj3V1IdoEeOcUOZ5WAG6MA" org.eventb.core.identifier="K"/>
+<org.eventb.core.constant name="_uj3V1YdoEeOcUOZ5WAG6MA" org.eventb.core.identifier="L"/>
+<org.eventb.core.constant name="_uj384IdoEeOcUOZ5WAG6MA" org.eventb.core.identifier="M"/>
+<org.eventb.core.constant name="_uj384YdoEeOcUOZ5WAG6MA" org.eventb.core.identifier="N"/>
+<org.eventb.core.constant name="_uj384odoEeOcUOZ5WAG6MA" org.eventb.core.identifier="R1"/>
+<org.eventb.core.constant name="_uj3844doEeOcUOZ5WAG6MA" org.eventb.core.identifier="R2"/>
+<org.eventb.core.constant name="_uj385IdoEeOcUOZ5WAG6MA" org.eventb.core.identifier="R3"/>
+<org.eventb.core.constant name="_uj385YdoEeOcUOZ5WAG6MA" org.eventb.core.identifier="R4"/>
+<org.eventb.core.constant name="_uj4j8IdoEeOcUOZ5WAG6MA" org.eventb.core.identifier="R5"/>
+<org.eventb.core.constant name="_uj4j8YdoEeOcUOZ5WAG6MA" org.eventb.core.identifier="R6"/>
+<org.eventb.core.constant name="_uj4j8odoEeOcUOZ5WAG6MA" org.eventb.core.identifier="R7"/>
+<org.eventb.core.constant name="_uj4j84doEeOcUOZ5WAG6MA" org.eventb.core.identifier="R8"/>
+<org.eventb.core.constant name="_uj4j9IdoEeOcUOZ5WAG6MA" org.eventb.core.identifier="R9"/>
+<org.eventb.core.constant name="_uj4j9YdoEeOcUOZ5WAG6MA" org.eventb.core.identifier="R10"/>
+<org.eventb.core.axiom name="_uj5LAIdoEeOcUOZ5WAG6MA" org.eventb.core.label="axm44" org.eventb.core.predicate="partition(BLOCKS, {A}, {B}, {C}, {D}, {E}, {F}, {G}, {H}, {I},{J}, {K},{L},{M},{N})"/>
+<org.eventb.core.axiom name="_uj5LAYdoEeOcUOZ5WAG6MA" org.eventb.core.label="axm45" org.eventb.core.predicate="partition(ROUTES, {R1}, {R2}, {R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})"/>
+<org.eventb.core.axiom name="_tx3w0YdrEeOYLZrGGNvfWA" org.eventb.core.label="compute_rtbl_from_nxt" org.eventb.core.predicate="rtbl = {b↦r∣ r∈dom(nxt) ∧ (b∈dom(nxt(r)) ∨ b∈ran(nxt(r)))}"/>
+<org.eventb.core.axiom name="_uj5LA4doEeOcUOZ5WAG6MA" org.eventb.core.label="axm40" org.eventb.core.predicate="nxt = {(R1 ↦ {L↦A, A↦B,B↦C}),&#10;    (R2 ↦ {L↦A, A↦B,B↦D,D↦E,E↦F, F↦G}),&#10;    (R3 ↦ {L↦A, A↦B,B↦D,D↦K,K↦J, J↦N}),&#10;    (R4 ↦ {M↦H,H↦I,I↦K,K↦F,F↦G}),&#10;    (R5 ↦ {M↦H,H↦I,I↦J,J↦N}),&#10;    (R6 ↦ {C↦B,B↦A,A↦L}),&#10;    (R7 ↦ {G↦F,F↦E,E↦D,D↦B,B↦A,A↦L}),&#10;    (R8 ↦ {N↦J,J↦K,K↦D,D↦B,B↦A,A↦L}),&#10;    (R9 ↦ {G↦F,F↦K,K↦I,I↦H,H↦M}),&#10;    (R10 ↦ {N↦J,J↦I,I↦H,H↦M})}"/>
+<org.eventb.core.axiom name="_uj5LBIdoEeOcUOZ5WAG6MA" org.eventb.core.label="axm41" org.eventb.core.predicate="fst = {(R1 ↦ L),(R2 ↦ L),(R3 ↦ L),&#10;                (R4 ↦ M),(R5 ↦ M),&#10;                (R6 ↦ C),&#10;                (R7 ↦ G),(R8 ↦ N),&#10;                (R9 ↦ G),(R10 ↦ N)}"/>
+<org.eventb.core.axiom name="_uj5yEIdoEeOcUOZ5WAG6MA" org.eventb.core.label="axm42" org.eventb.core.predicate="lst = {(R1 ↦ C),(R2 ↦ G),(R3 ↦ N),&#10;                (R4 ↦ G),(R5 ↦ N),(R6 ↦ L),&#10;                (R7 ↦ L),(R8 ↦ L),&#10;                (R9 ↦ M),(R10 ↦ M)}"/>
+</org.eventb.core.contextFile>
diff --git a/Train_B_Book/train_ctx0_prob.bcc b/Train_B_Book/train_ctx0_prob.bcc
new file mode 100644
index 0000000000000000000000000000000000000000..2d8f92e5e4d9aa172e7c7da24e2e481b7d63366e
--- /dev/null
+++ b/Train_B_Book/train_ctx0_prob.bcc
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scContextFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd">
+    <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.extendsContext#'"/>
+    <org.eventb.core.scInternalContext name="train_ctx0">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm44" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4thEYdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="train_ctx2" org.eventb.core.label="axm45" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIIdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="train_ctx3" org.eventb.core.label="axm14" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIYdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="train_ctx4" org.eventb.core.label="axm40" org.eventb.core.predicate="nxt={R1 ↦ {A ↦ B,B ↦ C},R2 ↦ {A ↦ B,B ↦ D,D ↦ E,E ↦ F},R3 ↦ {H ↦ G,G ↦ E,E ↦ F},R4 ↦ {I ↦ G,G ↦ E,E ↦ F},R5 ↦ {C ↦ B,B ↦ A},R6 ↦ {F ↦ E,E ↦ D,D ↦ B,B ↦ A},R7 ↦ {F ↦ E,E ↦ G,G ↦ H},R8 ↦ {F ↦ E,E ↦ G,G ↦ I}}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMIdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="train_ctx5" org.eventb.core.label="axm41" org.eventb.core.predicate="fst={R1 ↦ A,R2 ↦ A,R3 ↦ H,R4 ↦ I,R5 ↦ C,R6 ↦ F,R7 ↦ F,R8 ↦ F}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMYdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="train_ctx6" org.eventb.core.label="axm42" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ F,R3 ↦ F,R4 ↦ F,R5 ↦ A,R6 ↦ A,R7 ↦ H,R8 ↦ I}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvModmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scConstant name="A" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4qdwYdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="B" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4qdwodmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="C" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rE0IdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="D" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rE0YdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="E" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rE0odmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="F" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr4IdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="G" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr4YdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="H" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr4odmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="I" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr44dmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+    <org.eventb.core.scConstant name="R1" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4sS8IdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    <org.eventb.core.scConstant name="R2" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4sS8YdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    <org.eventb.core.scConstant name="R3" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4sS8odmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    <org.eventb.core.scConstant name="R4" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6AIdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    <org.eventb.core.scConstant name="R5" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6AYdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    <org.eventb.core.scConstant name="R6" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6AodmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    <org.eventb.core.scConstant name="R7" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6A4dmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    <org.eventb.core.scConstant name="R8" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4thEIdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.scContextFile>
diff --git a/Train_B_Book/train_ctx0_prob.bpo b/Train_B_Book/train_ctx0_prob.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..88b95cd0ef156aa85e4ea2a78c0495ca27973704
--- /dev/null
+++ b/Train_B_Book/train_ctx0_prob.bpo
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTET" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEU" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEV" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEW" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEX" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEY" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEZ" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="ROUTE[" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+        <org.eventb.core.poPredicate name="ROUTE\" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poPredicate name="ROUTE]" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poPredicate name="ROUTE^" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poPredicate name="ROUTE_" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poPredicate name="ROUTE`" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+        <org.eventb.core.poIdentifier name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="R1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R2" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R3" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R4" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R5" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R6" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R7" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R8" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_ctx0_prob.bpo|org.eventb.core.poFile#train_ctx0_prob|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4thEYdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIIdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIYdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="nxt={R1 ↦ {A ↦ B,B ↦ C},R2 ↦ {A ↦ B,B ↦ D,D ↦ E,E ↦ F},R3 ↦ {H ↦ G,G ↦ E,E ↦ F},R4 ↦ {I ↦ G,G ↦ E,E ↦ F},R5 ↦ {C ↦ B,B ↦ A},R6 ↦ {F ↦ E,E ↦ D,D ↦ B,B ↦ A},R7 ↦ {F ↦ E,E ↦ G,G ↦ H},R8 ↦ {F ↦ E,E ↦ G,G ↦ I}}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMIdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="fst={R1 ↦ A,R2 ↦ A,R3 ↦ H,R4 ↦ I,R5 ↦ C,R6 ↦ F,R7 ↦ F,R8 ↦ F}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMYdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="PRD5" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ F,R3 ↦ F,R4 ↦ F,R5 ↦ A,R6 ↦ A,R7 ↦ H,R8 ↦ I}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvModmEeOcUOZ5WAG6MA"/>
+    </org.eventb.core.poPredicateSet>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_ctx0_prob.bpr b/Train_B_Book/train_ctx0_prob.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..d13ec2a20267852024def0758a1effc175861a98
--- /dev/null
+++ b/Train_B_Book/train_ctx0_prob.bpr
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.prFile version="1"/>
\ No newline at end of file
diff --git a/Train_B_Book/train_ctx0_prob.bps b/Train_B_Book/train_ctx0_prob.bps
new file mode 100644
index 0000000000000000000000000000000000000000..ced513e210f482c3c7cafb26e5e709e8b27ac922
--- /dev/null
+++ b/Train_B_Book/train_ctx0_prob.bps
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.psFile/>
\ No newline at end of file
diff --git a/Train_B_Book/train_ctx0_prob.buc b/Train_B_Book/train_ctx0_prob.buc
new file mode 100644
index 0000000000000000000000000000000000000000..3c1f3eb4b58a400fa093d1b58971e27976f6d704
--- /dev/null
+++ b/Train_B_Book/train_ctx0_prob.buc
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.contextFile org.eventb.core.comment="contains data for the BMS Visualization by Lukas" org.eventb.core.configuration="org.eventb.core.fwd" org.eventb.texttools.text_lastmodified="1390836598798" org.eventb.texttools.text_representation="context train_ctx0_prob // contains data for the BMS Visualization by Lukas&#10; extends train_ctx0&#10;constants A B C D E F G H I R1 R2 R3 R4 R5 R6 R7 R8&#10;&#10;axioms&#10;  @axm44 partition(BLOCKS, {A}, {B}, {C}, {D}, {E}, {F}, {G}, {H}, {I})&#10;  @axm45 partition(ROUTES, {R1}, {R2}, {R3},{R4},{R5},{R6},{R7},{R8})&#10;&#10;  @axm14 rtbl = {(A ↦ R1),(A ↦ R2),(A ↦ R5),(A ↦ R6),(B ↦ R1),(B ↦ R2),(B ↦ R5),(B ↦ R6),(C ↦ R1),(C ↦ R5),(D ↦ R2),(D ↦ R6),(E ↦ R2),(E ↦ R3),(E ↦ R4),(E ↦ R6),(E ↦ R7),(E ↦ R8),(F ↦ R2),(F ↦ R3),(F ↦ R4),(F ↦ R6),(F ↦ R7),(F ↦ R8),(G ↦ R3),(G ↦ R4),(G ↦ R4),(G ↦ R7),(G ↦ R8),(H ↦ R3),(H ↦ R7),(I ↦ R4),(I ↦ R8)}&#10;  @axm40 nxt = {(R1 ↦ {A↦B,B↦C}),(R2 ↦ {A↦B,B↦D,D↦E,E↦F}),(R3 ↦ {H↦G,G↦E,E↦F}),(R4 ↦ {I↦G,G↦E,E↦F}),(R5 ↦ {C↦B,B↦A}),(R6 ↦ {F↦E,E↦D,D↦B,B↦A}),(R7 ↦ {F↦E,E↦G,G↦H}),(R8 ↦ {F↦E,E↦G,G↦I})}&#10;  @axm41 fst = {(R1 ↦ A),(R2 ↦ A),(R3 ↦ H),(R4 ↦ I),(R5 ↦ C),(R6 ↦ F),(R7 ↦ F),(R8 ↦ F)}&#10;  @axm42 lst = {(R1 ↦ C),(R2 ↦ F),(R3 ↦ F),(R4 ↦ F),(R5 ↦ A),(R6 ↦ A),(R7 ↦ H),(R8 ↦ I)}&#10;end&#10;" version="3">
+<org.eventb.core.extendsContext name="'" org.eventb.core.target="train_ctx0"/>
+<org.eventb.core.constant name="_y4qdwYdmEeOcUOZ5WAG6MA" org.eventb.core.identifier="A"/>
+<org.eventb.core.constant name="_y4qdwodmEeOcUOZ5WAG6MA" org.eventb.core.identifier="B"/>
+<org.eventb.core.constant name="_y4rE0IdmEeOcUOZ5WAG6MA" org.eventb.core.identifier="C"/>
+<org.eventb.core.constant name="_y4rE0YdmEeOcUOZ5WAG6MA" org.eventb.core.identifier="D"/>
+<org.eventb.core.constant name="_y4rE0odmEeOcUOZ5WAG6MA" org.eventb.core.identifier="E"/>
+<org.eventb.core.constant name="_y4rr4IdmEeOcUOZ5WAG6MA" org.eventb.core.identifier="F"/>
+<org.eventb.core.constant name="_y4rr4YdmEeOcUOZ5WAG6MA" org.eventb.core.identifier="G"/>
+<org.eventb.core.constant name="_y4rr4odmEeOcUOZ5WAG6MA" org.eventb.core.identifier="H"/>
+<org.eventb.core.constant name="_y4rr44dmEeOcUOZ5WAG6MA" org.eventb.core.identifier="I"/>
+<org.eventb.core.constant name="_y4sS8IdmEeOcUOZ5WAG6MA" org.eventb.core.identifier="R1"/>
+<org.eventb.core.constant name="_y4sS8YdmEeOcUOZ5WAG6MA" org.eventb.core.identifier="R2"/>
+<org.eventb.core.constant name="_y4sS8odmEeOcUOZ5WAG6MA" org.eventb.core.identifier="R3"/>
+<org.eventb.core.constant name="_y4s6AIdmEeOcUOZ5WAG6MA" org.eventb.core.identifier="R4"/>
+<org.eventb.core.constant name="_y4s6AYdmEeOcUOZ5WAG6MA" org.eventb.core.identifier="R5"/>
+<org.eventb.core.constant name="_y4s6AodmEeOcUOZ5WAG6MA" org.eventb.core.identifier="R6"/>
+<org.eventb.core.constant name="_y4s6A4dmEeOcUOZ5WAG6MA" org.eventb.core.identifier="R7"/>
+<org.eventb.core.constant name="_y4thEIdmEeOcUOZ5WAG6MA" org.eventb.core.identifier="R8"/>
+<org.eventb.core.axiom name="_y4thEYdmEeOcUOZ5WAG6MA" org.eventb.core.label="axm44" org.eventb.core.predicate="partition(BLOCKS, {A}, {B}, {C}, {D}, {E}, {F}, {G}, {H}, {I})"/>
+<org.eventb.core.axiom name="_y4uIIIdmEeOcUOZ5WAG6MA" org.eventb.core.label="axm45" org.eventb.core.predicate="partition(ROUTES, {R1}, {R2}, {R3},{R4},{R5},{R6},{R7},{R8})"/>
+<org.eventb.core.axiom name="_y4uIIYdmEeOcUOZ5WAG6MA" org.eventb.core.label="axm14" org.eventb.core.predicate="rtbl = {(A ↦ R1),(A ↦ R2),(A ↦ R5),(A ↦ R6),(B ↦ R1),(B ↦ R2),(B ↦ R5),(B ↦ R6),(C ↦ R1),(C ↦ R5),(D ↦ R2),(D ↦ R6),(E ↦ R2),(E ↦ R3),(E ↦ R4),(E ↦ R6),(E ↦ R7),(E ↦ R8),(F ↦ R2),(F ↦ R3),(F ↦ R4),(F ↦ R6),(F ↦ R7),(F ↦ R8),(G ↦ R3),(G ↦ R4),(G ↦ R4),(G ↦ R7),(G ↦ R8),(H ↦ R3),(H ↦ R7),(I ↦ R4),(I ↦ R8)}"/>
+<org.eventb.core.axiom name="_y4uvMIdmEeOcUOZ5WAG6MA" org.eventb.core.label="axm40" org.eventb.core.predicate="nxt = {(R1 ↦ {A↦B,B↦C}),(R2 ↦ {A↦B,B↦D,D↦E,E↦F}),(R3 ↦ {H↦G,G↦E,E↦F}),(R4 ↦ {I↦G,G↦E,E↦F}),(R5 ↦ {C↦B,B↦A}),(R6 ↦ {F↦E,E↦D,D↦B,B↦A}),(R7 ↦ {F↦E,E↦G,G↦H}),(R8 ↦ {F↦E,E↦G,G↦I})}"/>
+<org.eventb.core.axiom name="_y4uvMYdmEeOcUOZ5WAG6MA" org.eventb.core.label="axm41" org.eventb.core.predicate="fst = {(R1 ↦ A),(R2 ↦ A),(R3 ↦ H),(R4 ↦ I),(R5 ↦ C),(R6 ↦ F),(R7 ↦ F),(R8 ↦ F)}"/>
+<org.eventb.core.axiom name="_y4uvModmEeOcUOZ5WAG6MA" org.eventb.core.label="axm42" org.eventb.core.predicate="lst = {(R1 ↦ C),(R2 ↦ F),(R3 ↦ F),(R4 ↦ F),(R5 ↦ A),(R6 ↦ A),(R7 ↦ H),(R8 ↦ I)}"/>
+</org.eventb.core.contextFile>
diff --git a/Train_B_Book/train_ctx1.bcc b/Train_B_Book/train_ctx1.bcc
new file mode 100644
index 0000000000000000000000000000000000000000..a05c493538a95fcfd844612b6eee47776e75dbde
--- /dev/null
+++ b/Train_B_Book/train_ctx1.bcc
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scContextFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd">
+    <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.extendsContext#internal_extendsContext1"/>
+    <org.eventb.core.scInternalContext name="train_ctx0">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm1" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scCarrierSet name="S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.carrierSet#internal_cst1" org.eventb.core.type="ℙ(S)"/>
+    <org.eventb.core.scConstant name="SIG" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+</org.eventb.core.scContextFile>
diff --git a/Train_B_Book/train_ctx1.bpo b/Train_B_Book/train_ctx1.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..ae3396a92512abdf49e8fd8460a19eb0893b42be
--- /dev/null
+++ b/Train_B_Book/train_ctx1.bpo
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTET" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEU" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEV" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEW" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEX" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEY" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEZ" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="ROUTE[" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+        <org.eventb.core.poPredicate name="ROUTE\" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poPredicate name="ROUTE]" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poPredicate name="ROUTE^" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poPredicate name="ROUTE_" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poPredicate name="ROUTE`" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+        <org.eventb.core.poIdentifier name="S" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.poIdentifier name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_ctx1.bpo|org.eventb.core.poFile#train_ctx1|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.axiom#internal_axm1A"/>
+    </org.eventb.core.poPredicateSet>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_ctx1.bpr b/Train_B_Book/train_ctx1.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..d623e24708c97037720dedec3ed59df0e079979c
--- /dev/null
+++ b/Train_B_Book/train_ctx1.bpr
@@ -0,0 +1,1506 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.prFile version="1">
+<org.eventb.core.prProof name="axm2/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p69"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p68"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p70"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p72"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p74"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p76"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p78"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p77"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p80"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p79"/>
+<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p81"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p69"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p82"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p71"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p83"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p73"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p84"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p78"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p85"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p80"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p86"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p81"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p87"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p82"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p88"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p83"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="axm1/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p69"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p68"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p70"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p72"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p74"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p76"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p78"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p77"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p80"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p79"/>
+<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p81"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p69"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p82"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p71"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p83"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p73"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p84"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p78"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p85"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p80"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p86"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p81"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p87"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p82"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p88"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p83"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+</org.eventb.core.prProof>
+<org.eventb.core.prProof name="axm2/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
+<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p69"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p68"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p70"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p72"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p74"/>
+<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p76"/>
+<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p78"/>
+<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p77"/>
+<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p80"/>
+<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p79"/>
+<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p81"/>
+<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p69"/>
+<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p82"/>
+<org.eventb.core.prHypAction name="HIDE8" org.eventb.core.prHyps="p71"/>
+<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p83"/>
+<org.eventb.core.prHypAction name="HIDE10" org.eventb.core.prHyps="p73"/>
+<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+<org.eventb.core.prAnte name="'">
+<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p84"/>
+<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p78"/>
+<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p85"/>
+<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p80"/>
+<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p86"/>
+<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p81"/>
+<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p87"/>
+<org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p82"/>
+<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p88"/>
+<org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p83"/>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+</org.eventb.core.prAnte>
+<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+</org.eventb.core.prRule>
+<org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬D=E">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=H">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R8">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=E">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R8">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=F">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=I">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R4">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬C=D">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=G">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬B=C">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R5">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=I">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R6">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=G">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=I">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R4">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=G">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R5">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p39" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R8">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=G">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R7=R8">
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬F=G">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬G=H">
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R8">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R6=R7">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=F">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=H">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R5">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=H">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R8">
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R3=R4">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=H">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R7">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=I">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=H">
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R7">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=F">
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=D">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬H=I">
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=E">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R5=R6">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬R1=R2">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R7">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R3">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R6">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=I">
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R7">
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R6">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R7">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p74" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=I">
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p38" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+<org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R8">
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+<org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+<org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R4=R5">
+<org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R6">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+<org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+<org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+<org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R2=R3">
+<org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+<org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬E=F">
+<org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+<org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+</org.eventb.core.prPred>
+<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
+<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+</org.eventb.core.prProof>
+</org.eventb.core.prFile>
diff --git a/Train_B_Book/train_ctx1.bps b/Train_B_Book/train_ctx1.bps
new file mode 100644
index 0000000000000000000000000000000000000000..ced513e210f482c3c7cafb26e5e709e8b27ac922
--- /dev/null
+++ b/Train_B_Book/train_ctx1.bps
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.psFile/>
\ No newline at end of file
diff --git a/Train_B_Book/train_ctx1.buc b/Train_B_Book/train_ctx1.buc
new file mode 100644
index 0000000000000000000000000000000000000000..42a870d99e3cf0558191a23d022602d3aa473ae5
--- /dev/null
+++ b/Train_B_Book/train_ctx1.buc
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.contextFile org.eventb.core.configuration="org.eventb.core.fwd" org.eventb.texttools.text_lastmodified="1390836283238" org.eventb.texttools.text_representation="context train_ctx1 extends train_ctx0&#10;&#10;sets S&#10;&#10;constants SIG&#10;&#10;axioms&#10;   @axm1 SIG ∈ ran(fst) ⤖ S&#10;end&#10;" version="3">
+<org.eventb.core.extendsContext name="internal_extendsContext1" org.eventb.core.target="train_ctx0"/>
+<org.eventb.core.axiom name="internal_axm1A" org.eventb.core.label="axm1" org.eventb.core.predicate="SIG ∈ ran(fst) ⤖ S"/>
+<org.eventb.core.carrierSet name="internal_cst1" org.eventb.core.identifier="S"/>
+<org.eventb.core.constant name="internal_cst1" org.eventb.core.identifier="SIG"/>
+</org.eventb.core.contextFile>
diff --git a/Train_B_Book/train_ctx1_beebook.bcc b/Train_B_Book/train_ctx1_beebook.bcc
new file mode 100644
index 0000000000000000000000000000000000000000..0759af1e6c1e4fe1f9e086fcc2a1cf3fef82bc27
--- /dev/null
+++ b/Train_B_Book/train_ctx1_beebook.bcc
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scContextFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase;de.prob.units.mchBase">
+    <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx1.bcc|org.eventb.core.scContextFile#train_ctx1" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.extendsContext#_5SetQIdrEeOYLZrGGNvfWA"/>
+    <org.eventb.core.scExtendsContext name="(" org.eventb.core.scTarget="/Train/train_ctx0_beebook.bcc|org.eventb.core.scContextFile#train_ctx0_beebook" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.extendsContext#_5SetQYdrEeOYLZrGGNvfWA"/>
+    <org.eventb.core.scInternalContext name="train_ctx0">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx1">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.extendsContext#internal_extendsContext1"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm1" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scCarrierSet name="S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.carrierSet#internal_cst1" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.scConstant name="SIG" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx0_beebook">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.extendsContext#'"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm44" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx2" org.eventb.core.label="axm45" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAYdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx3" org.eventb.core.label="compute_rtbl_from_nxt" org.eventb.core.predicate="rtbl={b⦂BLOCKS,r⦂ROUTES·r∈dom(nxt)∧(b∈dom(nxt(r))∨b∈ran(nxt(r))) ∣ b ↦ r}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_tx3w0YdrEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx4" org.eventb.core.label="axm40" org.eventb.core.predicate="nxt={R1 ↦ {L ↦ A,A ↦ B,B ↦ C},R2 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ E,E ↦ F,F ↦ G},R3 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ K,K ↦ J,J ↦ N},R4 ↦ {M ↦ H,H ↦ I,I ↦ K,K ↦ F,F ↦ G},R5 ↦ {M ↦ H,H ↦ I,I ↦ J,J ↦ N},R6 ↦ {C ↦ B,B ↦ A,A ↦ L},R7 ↦ {G ↦ F,F ↦ E,E ↦ D,D ↦ B,B ↦ A,A ↦ L},R8 ↦ {N ↦ J,J ↦ K,K ↦ D,D ↦ B,B ↦ A,A ↦ L},R9 ↦ {G ↦ F,F ↦ K,K ↦ I,I ↦ H,H ↦ M},R10 ↦ {N ↦ J,J ↦ I,I ↦ H,H ↦ M}}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LA4doEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx5" org.eventb.core.label="axm41" org.eventb.core.predicate="fst={R1 ↦ L,R2 ↦ L,R3 ↦ L,R4 ↦ M,R5 ↦ M,R6 ↦ C,R7 ↦ G,R8 ↦ N,R9 ↦ G,R10 ↦ N}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LBIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx6" org.eventb.core.label="axm42" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ G,R3 ↦ N,R4 ↦ G,R5 ↦ N,R6 ↦ L,R7 ↦ L,R8 ↦ L,R9 ↦ M,R10 ↦ M}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5yEIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="A" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwIdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="B" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwYdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="C" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwodoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="D" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uw4doEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="E" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uxIdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="F" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uxYdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="G" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="H" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="I" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0odoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="J" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V04doEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="K" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V1IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="L" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V1YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="M" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="N" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="R10" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j9YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R1" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384odoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R2" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3844doEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R3" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj385IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R4" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj385YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R5" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R6" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R7" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8odoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R8" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j84doEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R9" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j9IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scAxiom name="train_ctx0_beebool" org.eventb.core.label="axm2" org.eventb.core.predicate="card(S)=5" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5SfUU4drEeOYLZrGGNvfWA" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scAxiom name="train_ctx0_beeboom" org.eventb.core.label="axm3" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5Sf7YIdrEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="train_ctx0_beeboon" org.eventb.core.label="axm4" org.eventb.core.predicate="SIG={L ↦ S1,M ↦ S2,N ↦ S3,C ↦ S4,G ↦ S5}" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5Sf7YYdrEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scConstant name="S1" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SetQodrEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+    <org.eventb.core.scConstant name="S2" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SetQ4drEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+    <org.eventb.core.scConstant name="S3" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SfUUIdrEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+    <org.eventb.core.scConstant name="S4" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SfUUYdrEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+    <org.eventb.core.scConstant name="S5" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SfUUodrEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+</org.eventb.core.scContextFile>
diff --git a/Train_B_Book/train_ctx1_beebook.bpo b/Train_B_Book/train_ctx1_beebook.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..4c70a605f21564248f1b9d243eac174975a8f7ca
--- /dev/null
+++ b/Train_B_Book/train_ctx1_beebook.bpo
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTET" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEU" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEV" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEW" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEX" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEY" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEZ" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="ROUTE[" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+        <org.eventb.core.poPredicate name="ROUTE\" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poPredicate name="ROUTE]" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poPredicate name="ROUTE^" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poPredicate name="ROUTE_" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poPredicate name="ROUTE`" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+        <org.eventb.core.poIdentifier name="S" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.poIdentifier name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        <org.eventb.core.poPredicate name="ROUTEa" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poIdentifier name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="J" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="K" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="L" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="M" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="N" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="R10" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R2" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R3" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R4" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R5" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R6" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R7" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R8" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R9" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poPredicate name="ROUTEb" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEc" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAYdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEd" org.eventb.core.predicate="rtbl={b⦂BLOCKS,r⦂ROUTES·r∈dom(nxt)∧(b∈dom(nxt(r))∨b∈ran(nxt(r))) ∣ b ↦ r}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_tx3w0YdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poPredicate name="ROUTEe" org.eventb.core.predicate="nxt={R1 ↦ {L ↦ A,A ↦ B,B ↦ C},R2 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ E,E ↦ F,F ↦ G},R3 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ K,K ↦ J,J ↦ N},R4 ↦ {M ↦ H,H ↦ I,I ↦ K,K ↦ F,F ↦ G},R5 ↦ {M ↦ H,H ↦ I,I ↦ J,J ↦ N},R6 ↦ {C ↦ B,B ↦ A,A ↦ L},R7 ↦ {G ↦ F,F ↦ E,E ↦ D,D ↦ B,B ↦ A,A ↦ L},R8 ↦ {N ↦ J,J ↦ K,K ↦ D,D ↦ B,B ↦ A,A ↦ L},R9 ↦ {G ↦ F,F ↦ K,K ↦ I,I ↦ H,H ↦ M},R10 ↦ {N ↦ J,J ↦ I,I ↦ H,H ↦ M}}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LA4doEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEf" org.eventb.core.predicate="fst={R1 ↦ L,R2 ↦ L,R3 ↦ L,R4 ↦ M,R5 ↦ M,R6 ↦ C,R7 ↦ G,R8 ↦ N,R9 ↦ G,R10 ↦ N}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LBIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEg" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ G,R3 ↦ N,R4 ↦ G,R5 ↦ N,R6 ↦ L,R7 ↦ L,R8 ↦ L,R9 ↦ M,R10 ↦ M}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5yEIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poIdentifier name="S1" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S2" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S3" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S4" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S5" org.eventb.core.type="S"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="axm2/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Theorem" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_ctx1_beebook.bpo|org.eventb.core.poFile#train_ctx1_beebook|org.eventb.core.poPredicateSet#ABSHYP"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="finite(S)" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5SfUU4drEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5SfUU4drEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_ctx1_beebook.bpo|org.eventb.core.poFile#train_ctx1_beebook|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_ctx1_beebook.bpo|org.eventb.core.poFile#train_ctx1_beebook|org.eventb.core.poPredicateSet#ABSHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="axm2/THM" org.eventb.core.accurate="true" org.eventb.core.poDesc="Theorem" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_ctx1_beebook.bpo|org.eventb.core.poFile#train_ctx1_beebook|org.eventb.core.poPredicateSet#ABSHYP"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="card(S)=5" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5SfUU4drEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5SfUU4drEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_ctx1_beebook.bpo|org.eventb.core.poFile#train_ctx1_beebook|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_ctx1_beebook.bpo|org.eventb.core.poFile#train_ctx1_beebook|org.eventb.core.poPredicateSet#ABSHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_ctx1_beebook.bpo|org.eventb.core.poFile#train_ctx1_beebook|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="card(S)=5" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5SfUU4drEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5Sf7YIdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="SIG={L ↦ S1,M ↦ S2,N ↦ S3,C ↦ S4,G ↦ S5}" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5Sf7YYdrEeOYLZrGGNvfWA"/>
+    </org.eventb.core.poPredicateSet>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_ctx1_beebook.bpr b/Train_B_Book/train_ctx1_beebook.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..5395c3355c94ea3c8e36ab51af24b900bb567d7b
--- /dev/null
+++ b/Train_B_Book/train_ctx1_beebook.bpr
@@ -0,0 +1,1823 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.prFile version="1">
+    <org.eventb.core.prProof name="axm2/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+                <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p93" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+                        <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p140" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p141"/>
+                                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p142" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p143"/>
+                                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p144" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p145"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p146"/>
+                                        <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p147" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p148"/>
+                                        <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p149" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p150"/>
+                                        <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p141" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p151"/>
+                                        <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p143" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p152"/>
+                                        <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p145" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p153"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p148" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p154"/>
+                                                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p150" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p155"/>
+                                                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p151" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p156"/>
+                                                <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p152" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p157"/>
+                                                <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p153" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p158"/>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=K">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=L">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R7=R9">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p145" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬I=J">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=M">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p156" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=M">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p153" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=N">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=J">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=M">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p146" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p157" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=J">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=L">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R9">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p148" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬K=L">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=K">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=K">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=L">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=L">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R8=R9">
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬H=J">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬M=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=M">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=M">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=M">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=N">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=J">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R9">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=K">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p155" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬J=L">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=L">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=L">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬J=K">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p140" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=J">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬L=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=M">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p149" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p158" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=M">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=J">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬L=M">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R10">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R9">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R9">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R9=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=K">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=K">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=L">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=L">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬I=K">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p154" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p150" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=M">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=M">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=J">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬K=M">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=J">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R9">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R9">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R8=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=K">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=K">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=L">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm2/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+                <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p93" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+                        <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p140" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p141"/>
+                                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p142" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p143"/>
+                                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p144" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p145"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p146"/>
+                                        <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p147" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p148"/>
+                                        <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p149" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p150"/>
+                                        <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p141" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p151"/>
+                                        <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p143" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p152"/>
+                                        <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p145" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p153"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p148" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p154"/>
+                                                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p150" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p155"/>
+                                                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p151" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p156"/>
+                                                <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p152" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p157"/>
+                                                <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p153" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p158"/>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬H=K">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬C=L">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬R7=R9">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p145" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬I=J">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬F=M">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬J=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p156" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬B=M">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p153" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬F=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬B=N">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬E=J">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬J=M">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p146" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p157" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=J">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬G=L">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬R3=R9">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬R3=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p148" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬R7=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬K=L">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬D=K">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p127" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬G=K">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬F=L">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬B=L">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬R8=R9">
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p108" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬H=J">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬M=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬I=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=M">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬E=M">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p107" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬I=M">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬E=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=N">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬D=J">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p123" org.eventb.core.predicate="¬R4=R9">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬R2=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬C=K">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p155" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p133" org.eventb.core.predicate="¬R6=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬J=L">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I,J,K,L,M,N}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬E=L">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=L">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬J=K">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p140" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p115" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬G=J">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬L=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬D=M">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬H=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p149" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p158" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬H=M">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬C=J">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬D=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬L=M">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="¬R1=R10">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬R5=R9">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬R1=R9">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬R9=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬B=K">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬F=K">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬I=L">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p129" org.eventb.core.predicate="¬R5=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p116" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬D=L">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬I=K">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p154" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p121" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬K=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬G=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p150" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬C=M">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p134" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8,R9,R10}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p120" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬G=M">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=J">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬K=M">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="M" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬F=J">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="J" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬C=N">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="N" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p132" org.eventb.core.predicate="¬R6=R9">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p110" org.eventb.core.predicate="¬R2=R9">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R9" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬R8=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬R4=R10">
+            <org.eventb.core.prIdent name="R10" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=K">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬E=K">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="K" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬H=L">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="L" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+</org.eventb.core.prFile>
diff --git a/Train_B_Book/train_ctx1_beebook.bps b/Train_B_Book/train_ctx1_beebook.bps
new file mode 100644
index 0000000000000000000000000000000000000000..f09c9164718ff898abb4584b899432f7c1e11687
--- /dev/null
+++ b/Train_B_Book/train_ctx1_beebook.bps
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.psFile>
+    <org.eventb.core.psStatus name="axm2/WD" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="axm2/THM" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+</org.eventb.core.psFile>
diff --git a/Train_B_Book/train_ctx1_beebook.buc b/Train_B_Book/train_ctx1_beebook.buc
new file mode 100644
index 0000000000000000000000000000000000000000..0d21a043324427e5a61924ec17e9cc33d93b2d2f
--- /dev/null
+++ b/Train_B_Book/train_ctx1_beebook.buc
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.contextFile org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase;de.prob.units.mchBase" org.eventb.texttools.text_lastmodified="1390838322696" org.eventb.texttools.text_representation="context train_ctx1_beebok extends train_ctx1  train_ctx0_beebook&#10;constants  S1 S2 S3 S4 S5&#10;axioms&#10;  theorem @axm2 card(S)=5&#10;  @axm3 partition(S, {S1}, {S2}, {S3}, {S4}, {S5})&#10;  @axm4 SIG = {(L↦S1),(M↦S2),(N↦S3),(C↦S4),(G↦S5)}&#10;end&#10;" version="3">
+<org.eventb.core.extendsContext name="_5SetQIdrEeOYLZrGGNvfWA" org.eventb.core.target="train_ctx1"/>
+<org.eventb.core.extendsContext name="_5SetQYdrEeOYLZrGGNvfWA" org.eventb.core.target="train_ctx0_beebook"/>
+<org.eventb.core.constant name="_5SetQodrEeOYLZrGGNvfWA" org.eventb.core.identifier="S1"/>
+<org.eventb.core.constant name="_5SetQ4drEeOYLZrGGNvfWA" org.eventb.core.identifier="S2"/>
+<org.eventb.core.constant name="_5SfUUIdrEeOYLZrGGNvfWA" org.eventb.core.identifier="S3"/>
+<org.eventb.core.constant name="_5SfUUYdrEeOYLZrGGNvfWA" org.eventb.core.identifier="S4"/>
+<org.eventb.core.constant name="_5SfUUodrEeOYLZrGGNvfWA" org.eventb.core.identifier="S5"/>
+<org.eventb.core.axiom name="_5SfUU4drEeOYLZrGGNvfWA" org.eventb.core.label="axm2" org.eventb.core.predicate="card(S)=5" org.eventb.core.theorem="true"/>
+<org.eventb.core.axiom name="_5Sf7YIdrEeOYLZrGGNvfWA" org.eventb.core.label="axm3" org.eventb.core.predicate="partition(S, {S1}, {S2}, {S3}, {S4}, {S5})"/>
+<org.eventb.core.axiom name="_5Sf7YYdrEeOYLZrGGNvfWA" org.eventb.core.label="axm4" org.eventb.core.predicate="SIG = {(L↦S1),(M↦S2),(N↦S3),(C↦S4),(G↦S5)}"/>
+</org.eventb.core.contextFile>
diff --git a/Train_B_Book/train_ctx1_prob.bcc b/Train_B_Book/train_ctx1_prob.bcc
new file mode 100644
index 0000000000000000000000000000000000000000..df35a1e7e13bb5b62224a988344eb4c0cff8e8fe
--- /dev/null
+++ b/Train_B_Book/train_ctx1_prob.bcc
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scContextFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd">
+    <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx1.bcc|org.eventb.core.scContextFile#train_ctx1" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.extendsContext#'"/>
+    <org.eventb.core.scExtendsContext name="(" org.eventb.core.scTarget="/Train/train_ctx0_prob.bcc|org.eventb.core.scContextFile#train_ctx0_prob" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.extendsContext#_PkKY4IdnEeOcUOZ5WAG6MA"/>
+    <org.eventb.core.scInternalContext name="train_ctx0">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx1">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.extendsContext#internal_extendsContext1"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm1" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scCarrierSet name="S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.carrierSet#internal_cst1" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.scConstant name="SIG" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx0_prob">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.extendsContext#'"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm44" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4thEYdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx2" org.eventb.core.label="axm45" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIIdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx3" org.eventb.core.label="axm14" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIYdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx4" org.eventb.core.label="axm40" org.eventb.core.predicate="nxt={R1 ↦ {A ↦ B,B ↦ C},R2 ↦ {A ↦ B,B ↦ D,D ↦ E,E ↦ F},R3 ↦ {H ↦ G,G ↦ E,E ↦ F},R4 ↦ {I ↦ G,G ↦ E,E ↦ F},R5 ↦ {C ↦ B,B ↦ A},R6 ↦ {F ↦ E,E ↦ D,D ↦ B,B ↦ A},R7 ↦ {F ↦ E,E ↦ G,G ↦ H},R8 ↦ {F ↦ E,E ↦ G,G ↦ I}}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMIdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx5" org.eventb.core.label="axm41" org.eventb.core.predicate="fst={R1 ↦ A,R2 ↦ A,R3 ↦ H,R4 ↦ I,R5 ↦ C,R6 ↦ F,R7 ↦ F,R8 ↦ F}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMYdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx6" org.eventb.core.label="axm42" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ F,R3 ↦ F,R4 ↦ F,R5 ↦ A,R6 ↦ A,R7 ↦ H,R8 ↦ I}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvModmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="A" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4qdwYdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="B" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4qdwodmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="C" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rE0IdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="D" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rE0YdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="E" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rE0odmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="F" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr4IdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="G" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr4YdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="H" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr4odmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="I" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr44dmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="R1" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4sS8IdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R2" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4sS8YdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R3" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4sS8odmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R4" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6AIdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R5" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6AYdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R6" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6AodmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R7" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6A4dmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R8" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4thEIdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scAxiom name="train_ctx0_proc" org.eventb.core.label="axm2" org.eventb.core.predicate="card(S)=5" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.axiom#_K6L9EIdnEeOcUOZ5WAG6MA" org.eventb.core.theorem="true"/>
+    <org.eventb.core.scAxiom name="train_ctx0_prod" org.eventb.core.label="axm3" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.axiom#_K6L9EYdnEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="train_ctx0_proe" org.eventb.core.label="axm4" org.eventb.core.predicate="SIG={A ↦ S1,H ↦ S2,I ↦ S3,C ↦ S4,F ↦ S5}" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.axiom#_K6L9EodnEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scConstant name="S1" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.constant#_K6LWAIdnEeOcUOZ5WAG6MA" org.eventb.core.type="S"/>
+    <org.eventb.core.scConstant name="S2" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.constant#_K6LWAYdnEeOcUOZ5WAG6MA" org.eventb.core.type="S"/>
+    <org.eventb.core.scConstant name="S3" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.constant#_K6LWAodnEeOcUOZ5WAG6MA" org.eventb.core.type="S"/>
+    <org.eventb.core.scConstant name="S4" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.constant#_K6LWA4dnEeOcUOZ5WAG6MA" org.eventb.core.type="S"/>
+    <org.eventb.core.scConstant name="S5" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.constant#_K6LWBIdnEeOcUOZ5WAG6MA" org.eventb.core.type="S"/>
+</org.eventb.core.scContextFile>
diff --git a/Train_B_Book/train_ctx1_prob.bpo b/Train_B_Book/train_ctx1_prob.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..d431696ce14c279d1652848b11b15a14a0da1541
--- /dev/null
+++ b/Train_B_Book/train_ctx1_prob.bpo
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTET" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEU" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEV" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEW" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEX" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEY" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEZ" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="ROUTE[" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+        <org.eventb.core.poPredicate name="ROUTE\" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poPredicate name="ROUTE]" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poPredicate name="ROUTE^" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poPredicate name="ROUTE_" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poPredicate name="ROUTE`" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+        <org.eventb.core.poIdentifier name="S" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.poIdentifier name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        <org.eventb.core.poPredicate name="ROUTEa" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poIdentifier name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="R1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R2" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R3" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R4" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R5" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R6" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R7" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R8" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poPredicate name="ROUTEb" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4thEYdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEc" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIIdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEd" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIYdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEe" org.eventb.core.predicate="nxt={R1 ↦ {A ↦ B,B ↦ C},R2 ↦ {A ↦ B,B ↦ D,D ↦ E,E ↦ F},R3 ↦ {H ↦ G,G ↦ E,E ↦ F},R4 ↦ {I ↦ G,G ↦ E,E ↦ F},R5 ↦ {C ↦ B,B ↦ A},R6 ↦ {F ↦ E,E ↦ D,D ↦ B,B ↦ A},R7 ↦ {F ↦ E,E ↦ G,G ↦ H},R8 ↦ {F ↦ E,E ↦ G,G ↦ I}}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMIdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEf" org.eventb.core.predicate="fst={R1 ↦ A,R2 ↦ A,R3 ↦ H,R4 ↦ I,R5 ↦ C,R6 ↦ F,R7 ↦ F,R8 ↦ F}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMYdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEg" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ F,R3 ↦ F,R4 ↦ F,R5 ↦ A,R6 ↦ A,R7 ↦ H,R8 ↦ I}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvModmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poIdentifier name="S1" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S2" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S3" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S4" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S5" org.eventb.core.type="S"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="axm2/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Theorem" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_ctx1_prob.bpo|org.eventb.core.poFile#train_ctx1_prob|org.eventb.core.poPredicateSet#ABSHYP"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="finite(S)" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.axiom#_K6L9EIdnEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.axiom#_K6L9EIdnEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_ctx1_prob.bpo|org.eventb.core.poFile#train_ctx1_prob|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_ctx1_prob.bpo|org.eventb.core.poFile#train_ctx1_prob|org.eventb.core.poPredicateSet#ABSHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poSequent name="axm2/THM" org.eventb.core.accurate="true" org.eventb.core.poDesc="Theorem" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_ctx1_prob.bpo|org.eventb.core.poFile#train_ctx1_prob|org.eventb.core.poPredicateSet#ABSHYP"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="card(S)=5" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.axiom#_K6L9EIdnEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.axiom#_K6L9EIdnEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_ctx1_prob.bpo|org.eventb.core.poFile#train_ctx1_prob|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_ctx1_prob.bpo|org.eventb.core.poFile#train_ctx1_prob|org.eventb.core.poPredicateSet#ABSHYP"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_ctx1_prob.bpo|org.eventb.core.poFile#train_ctx1_prob|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="card(S)=5" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.axiom#_K6L9EIdnEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.axiom#_K6L9EYdnEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="SIG={A ↦ S1,H ↦ S2,I ↦ S3,C ↦ S4,F ↦ S5}" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.axiom#_K6L9EodnEeOcUOZ5WAG6MA"/>
+    </org.eventb.core.poPredicateSet>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_ctx1_prob.bpr b/Train_B_Book/train_ctx1_prob.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..43af4c60ec0056d0448b0ebbec0b31c57c25b8d8
--- /dev/null
+++ b/Train_B_Book/train_ctx1_prob.bpr
@@ -0,0 +1,1165 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.prFile version="1">
+    <org.eventb.core.prProof name="axm2/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+                <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p38" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+                        <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p68" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p69"/>
+                                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p70" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p71"/>
+                                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p72" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p73"/>
+                                <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p74" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p76"/>
+                                        <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p77" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p79" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p69" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p71" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p73" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p83"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p78" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p84"/>
+                                                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p80" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p85"/>
+                                                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p81" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86"/>
+                                                <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p82" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p87"/>
+                                                <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p83" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p88"/>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm2/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+                <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p38" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+                        <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p68" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p69"/>
+                                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p70" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p71"/>
+                                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p72" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p73"/>
+                                <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p74" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p76"/>
+                                        <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p77" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p78"/>
+                                        <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p79" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p69" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p71" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p73" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p83"/>
+                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p78" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p84"/>
+                                                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p80" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p85"/>
+                                                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p81" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86"/>
+                                                <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p82" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p87"/>
+                                                <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p83" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p88"/>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬B=C">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=G">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=H">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬C=D">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=H">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=I">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=E">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=G">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=G">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=G">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=H">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬G=H">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=D">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=H">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=E">
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬H=I">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬D=E">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+</org.eventb.core.prFile>
diff --git a/Train_B_Book/train_ctx1_prob.bps b/Train_B_Book/train_ctx1_prob.bps
new file mode 100644
index 0000000000000000000000000000000000000000..f09c9164718ff898abb4584b899432f7c1e11687
--- /dev/null
+++ b/Train_B_Book/train_ctx1_prob.bps
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.psFile>
+    <org.eventb.core.psStatus name="axm2/WD" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+    <org.eventb.core.psStatus name="axm2/THM" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+</org.eventb.core.psFile>
diff --git a/Train_B_Book/train_ctx1_prob.buc b/Train_B_Book/train_ctx1_prob.buc
new file mode 100644
index 0000000000000000000000000000000000000000..0f412c07eef0314ccf5ee9daeac0b3a3545a6716
--- /dev/null
+++ b/Train_B_Book/train_ctx1_prob.buc
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.contextFile org.eventb.core.configuration="org.eventb.core.fwd" org.eventb.texttools.text_lastmodified="1390836324688" org.eventb.texttools.text_representation="context train_ctx1_prob extends train_ctx1  train_ctx0_prob&#10;constants  S1 S2 S3 S4 S5&#10;axioms&#10;  theorem @axm2 card(S)=5&#10;  @axm3 partition(S, {S1}, {S2}, {S3}, {S4}, {S5})&#10;  @axm4 SIG = {(A↦S1),(H↦S2),(I↦S3),(C↦S4),(F↦S5)}&#10;end&#10;" version="3">
+<org.eventb.core.extendsContext name="'" org.eventb.core.target="train_ctx1"/>
+<org.eventb.core.extendsContext name="_PkKY4IdnEeOcUOZ5WAG6MA" org.eventb.core.target="train_ctx0_prob"/>
+<org.eventb.core.constant name="_K6LWAIdnEeOcUOZ5WAG6MA" org.eventb.core.identifier="S1"/>
+<org.eventb.core.constant name="_K6LWAYdnEeOcUOZ5WAG6MA" org.eventb.core.identifier="S2"/>
+<org.eventb.core.constant name="_K6LWAodnEeOcUOZ5WAG6MA" org.eventb.core.identifier="S3"/>
+<org.eventb.core.constant name="_K6LWA4dnEeOcUOZ5WAG6MA" org.eventb.core.identifier="S4"/>
+<org.eventb.core.constant name="_K6LWBIdnEeOcUOZ5WAG6MA" org.eventb.core.identifier="S5"/>
+<org.eventb.core.axiom name="_K6L9EIdnEeOcUOZ5WAG6MA" org.eventb.core.label="axm2" org.eventb.core.predicate="card(S)=5" org.eventb.core.theorem="true"/>
+<org.eventb.core.axiom name="_K6L9EYdnEeOcUOZ5WAG6MA" org.eventb.core.label="axm3" org.eventb.core.predicate="partition(S, {S1}, {S2}, {S3}, {S4}, {S5})"/>
+<org.eventb.core.axiom name="_K6L9EodnEeOcUOZ5WAG6MA" org.eventb.core.label="axm4" org.eventb.core.predicate="SIG = {(A↦S1),(H↦S2),(I↦S3),(C↦S4),(F↦S5)}"/>
+</org.eventb.core.contextFile>
diff --git a/Train_B_Book/train_ctx2.bcc b/Train_B_Book/train_ctx2.bcc
new file mode 100644
index 0000000000000000000000000000000000000000..3c5ea49d14827124bfe554e65515d1fc2619593e
--- /dev/null
+++ b/Train_B_Book/train_ctx2.bcc
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scContextFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd">
+    <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx1.bcc|org.eventb.core.scContextFile#train_ctx1" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.extendsContext#internal_extendsContext1"/>
+    <org.eventb.core.scInternalContext name="train_ctx0">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx1">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.extendsContext#internal_extendsContext1"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm1" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scCarrierSet name="S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.carrierSet#internal_cst1" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.scConstant name="SIG" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scAxiom name="train_ctx2" org.eventb.core.label="axm1" org.eventb.core.predicate="blpt⊆BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="train_ctx3" org.eventb.core.label="axm2" org.eventb.core.predicate="lft∈blpt → BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="train_ctx4" org.eventb.core.label="axm3" org.eventb.core.predicate="rht∈blpt → BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="train_ctx5" org.eventb.core.label="axm4" org.eventb.core.predicate="lft∩rht=(∅ ⦂ ℙ(BLOCKS×BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="train_ctx6" org.eventb.core.label="axm5" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="train_ctx7" org.eventb.core.label="axm6" org.eventb.core.predicate="blpt∩ran(fst)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="train_ctx8" org.eventb.core.label="axm7" org.eventb.core.predicate="blpt∩ran(lst)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scConstant name="rht" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+    <org.eventb.core.scConstant name="lft" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+    <org.eventb.core.scConstant name="blpt" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS)"/>
+</org.eventb.core.scContextFile>
diff --git a/Train_B_Book/train_ctx2.bpo b/Train_B_Book/train_ctx2.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..6325c023b28ee05cd420fffaef83ae62a5bb590c
--- /dev/null
+++ b/Train_B_Book/train_ctx2.bpo
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTET" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEU" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEV" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEW" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEX" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEY" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEZ" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="ROUTE[" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+        <org.eventb.core.poPredicate name="ROUTE\" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poPredicate name="ROUTE]" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poPredicate name="ROUTE^" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poPredicate name="ROUTE_" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poPredicate name="ROUTE`" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+        <org.eventb.core.poIdentifier name="S" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.poIdentifier name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        <org.eventb.core.poPredicate name="ROUTEa" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poIdentifier name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="axm5/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Axiom" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_ctx2.bpo|org.eventb.core.poFile#train_ctx2|org.eventb.core.poPredicateSet#HYPtrain_ctx5"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_ctx2.bpo|org.eventb.core.poFile#train_ctx2|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_ctx2.bpo|org.eventb.core.poFile#train_ctx2|org.eventb.core.poPredicateSet#HYPtrain_ctx5"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="HYPtrain_ctx5" org.eventb.core.parentSet="/Train/train_ctx2.bpo|org.eventb.core.poFile#train_ctx2|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="blpt⊆BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="lft∈blpt → BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="rht∈blpt → BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="PRD3" org.eventb.core.predicate="lft∩rht=(∅ ⦂ ℙ(BLOCKS×BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm4A"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_ctx2.bpo|org.eventb.core.poFile#train_ctx2|org.eventb.core.poPredicateSet#HYPtrain_ctx5" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD4" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="PRD5" org.eventb.core.predicate="blpt∩ran(fst)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="PRD6" org.eventb.core.predicate="blpt∩ran(lst)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm7A"/>
+    </org.eventb.core.poPredicateSet>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_ctx2.bpr b/Train_B_Book/train_ctx2.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..7ceed9ddb6bd20ef914672fec81203a44abd9e38
--- /dev/null
+++ b/Train_B_Book/train_ctx2.bpr
@@ -0,0 +1,3924 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.prFile version="1">
+    <org.eventb.core.prProof name="axm5/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
+                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
+                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
+                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17">
+                        <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p8"/>
+                        <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
+                        <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
+                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p13"/>
+                        <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
+                        <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
+                        <org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23">
+                                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p18"/>
+                                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
+                                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p20"/>
+                                <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21"/>
+                                <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p22"/>
+                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
+                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25">
+                                                <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p1">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26">
+                                                        <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
+                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps=""/>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                    <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                    <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p28">
+                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p1"/>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="blpt⊆BLOCKS">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="(∀r⦂ROUTES·r∈dom(nxt))∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="r∈dom(nxt)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="r∈ROUTES">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀r⦂ROUTES·r∈dom(nxt)"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm2/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(S,{S1},{S2},{S3},{S4},{S5}))" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p88"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p87"/>
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p89"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p82"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p84"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p97"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p86"/>
+                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p98"/>
+                                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p91"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p99"/>
+                                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p93"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p100"/>
+                                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p95"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p101"/>
+                                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p96"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p102"/>
+                                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p97"/>
+                                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p103"/>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H"/>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I"/>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F"/>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬S4=S5">
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G"/>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬S1=S5">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬S3=S5">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="S={S1,S2,S3,S4,S5}">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G"/>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H"/>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="lft∈blpt → {A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬S2=S3">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I"/>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬S2=S4">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬S1=S2">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F"/>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬S1=S3">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬S3=S4">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="lft∈blpt → BLOCKS"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D"/>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬S2=S5">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I"/>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="blpt⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H"/>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬S1=S4">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm3/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(S,{S1},{S2},{S3},{S4},{S5}))" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p88"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p87"/>
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p89"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p82"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p84"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p97"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p86"/>
+                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p98"/>
+                                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p91"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p99"/>
+                                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p93"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p100"/>
+                                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p95"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p101"/>
+                                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p96"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p102"/>
+                                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p97"/>
+                                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p105">
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p103" org.eventb.core.prInfHyps="p104"/>
+                                                                <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p103"/>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H"/>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I"/>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F"/>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬S4=S5">
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G"/>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬S1=S5">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬S3=S5">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})"/>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="rht∈blpt → {A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="S={S1,S2,S3,S4,S5}">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G"/>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H"/>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="lft∈blpt → {A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬S2=S3">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I"/>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬S2=S4">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬S1=S2">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F"/>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬S1=S3">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="rht∈blpt → BLOCKS"/>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬S3=S4">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="lft∈blpt → BLOCKS">
+            <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D"/>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬S2=S5">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I"/>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="blpt⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H"/>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬S1=S4">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm4/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0" org.eventb.core.prSets="BLOCKS">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(S,{S1},{S2},{S3},{S4},{S5}))" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p68"/>
+                                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p86"/>
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p88"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p89"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p81"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p83"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p85"/>
+                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p97"/>
+                                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p90"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p98"/>
+                                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p92"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p99"/>
+                                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p94"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p100"/>
+                                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p95"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p101"/>
+                                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p96"/>
+                                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prHyps="p1">
+                                                            <org.eventb.core.prAnte name="'">
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p102" org.eventb.core.prInfHyps="p103"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p104" org.eventb.core.prInfHyps="p105"/>
+                                                                <org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p102,p104"/>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬D=E"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=H"/>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=I"/>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=G"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬B=C"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F"/>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬S4=S5">
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=G"/>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬S1=S5">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬S3=S5">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})"/>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="rht∈blpt → {A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="S={S1,S2,S3,S4,S5}">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=G"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬G=H"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=F"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=H"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="lft∈blpt → {A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬S2=S3">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=I"/>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=F"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬H=I"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=I"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬S2=S4">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬S1=S2">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬E=F"/>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬S1=S3">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="rht∈blpt → BLOCKS">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬S3=S4">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=E"/>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=F"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="lft∈blpt → BLOCKS">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬C=D"/>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬S2=S5">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=I"/>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="blpt⊆BLOCKS">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=I"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=G"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬F=G"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=H"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H"/>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬S1=S4">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=H"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=H"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=D"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=E"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=I"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm6/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0" org.eventb.core.prSets="BLOCKS">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(S,{S1},{S2},{S3},{S4},{S5}))" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p68"/>
+                                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p86"/>
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p88"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p89"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p81"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p97"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p83"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p98"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p85"/>
+                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p99"/>
+                                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p90"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p100"/>
+                                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p92"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p101"/>
+                                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p95"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p102"/>
+                                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p96"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p103"/>
+                                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p97"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p98" org.eventb.core.prInfHyps="p104"/>
+                                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p98"/>
+                                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prHyps="p1">
+                                                            <org.eventb.core.prAnte name="'">
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p105" org.eventb.core.prInfHyps="p106"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p107" org.eventb.core.prInfHyps="p108"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p109"/>
+                                                                <org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p105,p107,p101"/>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬D=E"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=H"/>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=I"/>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=G"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬B=C"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F"/>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬S4=S5">
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=G"/>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬S1=S5">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬S3=S5">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})"/>
+        <org.eventb.core.prPred name="p108" org.eventb.core.predicate="rht∈blpt → {A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="S={S1,S2,S3,S4,S5}">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=G"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬G=H"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=F"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=H"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="lft∈blpt → {A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬S2=S3">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=I"/>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=F"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬H=I"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C"/>
+        <org.eventb.core.prPred name="p109" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ {A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=I"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬S2=S4">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬S1=S2">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬E=F"/>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬S1=S3">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p107" org.eventb.core.predicate="rht∈blpt → BLOCKS">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬S3=S4">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=E"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=F"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="lft∈blpt → BLOCKS">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬C=D"/>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬S2=S5">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=I"/>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="blpt⊆BLOCKS">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=I"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=G"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬F=G"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=H"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H"/>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬S1=S4">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=H"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=H"/>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=D"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=E"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=I"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm7/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0" org.eventb.core.prSets="BLOCKS">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p0" org.eventb.core.prInfHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p0"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(S,{S1},{S2},{S3},{S4},{S5}))" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p68"/>
+                                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p80"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p86"/>
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'">
+                                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p88"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p89"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p81"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p97"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p83"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p98"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p85"/>
+                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p99"/>
+                                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p90"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p100"/>
+                                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p92"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p101"/>
+                                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p95"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p102"/>
+                                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p96"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p103"/>
+                                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p97"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p98" org.eventb.core.prInfHyps="p104"/>
+                                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p98"/>
+                                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prHyps="p1">
+                                                            <org.eventb.core.prAnte name="'">
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p105" org.eventb.core.prInfHyps="p106"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p107" org.eventb.core.prInfHyps="p108"/>
+                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p109"/>
+                                                                <org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p105,p107,p101"/>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬D=E"/>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=H"/>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=I"/>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=G"/>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬B=C"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=F"/>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬S4=S5">
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=G"/>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬S1=S5">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬S3=S5">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})"/>
+        <org.eventb.core.prPred name="p108" org.eventb.core.predicate="rht∈blpt → {A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="S={S1,S2,S3,S4,S5}">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=G"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬G=H"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=F"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=H"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="lft∈blpt → {A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=D"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬S2=S3">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=I"/>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=F"/>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬H=I"/>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬A=B"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=C"/>
+        <org.eventb.core.prPred name="p109" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ {A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=I"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬S2=S4">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬S1=S2">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬E=F"/>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬S1=S3">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p107" org.eventb.core.predicate="rht∈blpt → BLOCKS">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬S3=S4">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=E"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=F"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="lft∈blpt → BLOCKS">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬C=D"/>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬S2=S5">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=I"/>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="blpt⊆BLOCKS">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=I"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=G"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬F=G"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+            <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=H"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=H"/>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬S1=S4">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=H"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=H"/>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=D"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=E"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=I"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=I"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=E"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=G"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="axm5/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p1"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(S,{S1},{S2},{S3},{S4},{S5}))" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p69"/>
+                                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p81"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p88"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p87"/>
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p98">
+                                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p89"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p82"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p84"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p97"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p86"/>
+                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p104">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p99"/>
+                                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p91"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p100"/>
+                                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p93"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p101"/>
+                                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p95"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p102"/>
+                                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p96"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p103"/>
+                                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p97"/>
+                                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees r)" org.eventb.core.prGoal="p104" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p105">
+                                                                <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prGoal="p105" org.eventb.core.prHyps="p2">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p110">
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p106" org.eventb.core.prInfHyps="p107"/>
+                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p108" org.eventb.core.prInfHyps="p109"/>
+                                                                        <org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p106,p108"/>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬D=E"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=H"/>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=I"/>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=G"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬B=C"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=F"/>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬S4=S5">
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=G"/>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬S1=S5">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬S3=S5">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})"/>
+        <org.eventb.core.prPred name="p109" org.eventb.core.predicate="rht∈blpt → {A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="S={S1,S2,S3,S4,S5}">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=G"/>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬G=H"/>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=F"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=H"/>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p107" org.eventb.core.predicate="lft∈blpt → {A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=D"/>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬S2=S3">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=I"/>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=F"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬H=I"/>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬A=B"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=C"/>
+        <org.eventb.core.prPred name="p110" org.eventb.core.predicate="(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ {A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=I"/>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬S2=S4">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬S1=S2">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬E=F"/>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬S1=S3">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p108" org.eventb.core.predicate="rht∈blpt → BLOCKS"/>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬S3=S4">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=E"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=F"/>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="lft∈blpt → BLOCKS"/>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬C=D"/>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬S2=S5">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=I"/>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="blpt⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=I"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=G"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES">
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬F=G"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=H"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=H"/>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬S1=S4">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=H"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=H"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=D"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=E"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=I"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=I"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=E"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=G"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:0"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="leuschel_axiom/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="b,r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(S,{S1},{S2},{S3},{S4},{S5}))" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p73"/>
+                                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p93">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p88"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p90"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p89"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p92"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p91"/>
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p105">
+                                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p98"/>
+                                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p97"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p99"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p100" org.eventb.core.prInfHyps="p101"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p100"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p102"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p86"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p103"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p88"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p90" org.eventb.core.prInfHyps="p104"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p105" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p112">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p106"/>
+                                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p96"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p98" org.eventb.core.prInfHyps="p107"/>
+                                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p98"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p108"/>
+                                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p101"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p102" org.eventb.core.prInfHyps="p109"/>
+                                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p102"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p103" org.eventb.core.prInfHyps="p110"/>
+                                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p103"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p104" org.eventb.core.prInfHyps="p111"/>
+                                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p104"/>
+                                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees b,r)" org.eventb.core.prGoal="p112" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p113">
+                                                                <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+                                                                <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p113" org.eventb.core.prHyps="">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p116" org.eventb.core.prHyps="p114,p115">
+                                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p116" org.eventb.core.prHyps="">
+                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p117">
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with blpt={B,E,G}" org.eventb.core.prHyps="p4">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p118"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p119"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p120" org.eventb.core.prInfHyps="p121"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p122" org.eventb.core.prInfHyps="p123"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p108" org.eventb.core.prInfHyps="p124"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p114" org.eventb.core.prInfHyps="p125"/>
+                                                                                        <org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p2,p3,p120,p122,p108,p114"/>
+                                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prHyps="p7">
+                                                                                            <org.eventb.core.prAnte name="'">
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p118" org.eventb.core.prInfHyps="p126"/>
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p119" org.eventb.core.prInfHyps="p127"/>
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p124" org.eventb.core.prInfHyps="p128"/>
+                                                                                                <org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p118,p119,p124"/>
+                                                                                                <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p117" org.eventb.core.prHyps="p1">
+                                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p129">
+                                                                                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p129" org.eventb.core.prHyps="">
+                                                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p130">
+                                                                                                                <org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p130" org.eventb.core.prHyps=""/>
+                                                                                                            </org.eventb.core.prAnte>
+                                                                                                        </org.eventb.core.prRule>
+                                                                                                    </org.eventb.core.prAnte>
+                                                                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                                                    <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                                                                </org.eventb.core.prRule>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p131">
+                                                                                <org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p131" org.eventb.core.prHyps="p1"/>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p132">
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with blpt={B,E,G}" org.eventb.core.prHyps="p4">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p118"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p119"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p120" org.eventb.core.prInfHyps="p121"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p122" org.eventb.core.prInfHyps="p123"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p108" org.eventb.core.prInfHyps="p124"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p114" org.eventb.core.prInfHyps="p125"/>
+                                                                                        <org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p2,p3,p120,p122,p108,p114"/>
+                                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prHyps="p7">
+                                                                                            <org.eventb.core.prAnte name="'">
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p118" org.eventb.core.prInfHyps="p126"/>
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p119" org.eventb.core.prInfHyps="p127"/>
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p124" org.eventb.core.prInfHyps="p128"/>
+                                                                                                <org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p118,p119,p124"/>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p133">
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with blpt={B,E,G}" org.eventb.core.prHyps="p4">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p118"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p119"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p120" org.eventb.core.prInfHyps="p121"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p122" org.eventb.core.prInfHyps="p123"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p108" org.eventb.core.prInfHyps="p124"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p114" org.eventb.core.prInfHyps="p125"/>
+                                                                                        <org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p2,p3,p120,p122,p108,p114"/>
+                                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prGoal="p133" org.eventb.core.prHyps="p7">
+                                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p134">
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p118" org.eventb.core.prInfHyps="p126"/>
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p119" org.eventb.core.prInfHyps="p127"/>
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p124" org.eventb.core.prInfHyps="p128"/>
+                                                                                                <org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p118,p119,p124"/>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p135">
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with blpt={B,E,G}" org.eventb.core.prHyps="p4">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p118"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p119"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p120" org.eventb.core.prInfHyps="p121"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p122" org.eventb.core.prInfHyps="p123"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p108" org.eventb.core.prInfHyps="p124"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p114" org.eventb.core.prInfHyps="p125"/>
+                                                                                        <org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p2,p3,p120,p122,p108,p114"/>
+                                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prHyps="p7">
+                                                                                            <org.eventb.core.prAnte name="'">
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p118" org.eventb.core.prInfHyps="p126"/>
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p119" org.eventb.core.prInfHyps="p127"/>
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p124" org.eventb.core.prInfHyps="p128"/>
+                                                                                                <org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p118,p119,p124"/>
+                                                                                                <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p135" org.eventb.core.prHyps="p126">
+                                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p125">
+                                                                                                        <org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p125" org.eventb.core.prHyps="p125"/>
+                                                                                                    </org.eventb.core.prAnte>
+                                                                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                                                    <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e1"/>
+                                                                                                </org.eventb.core.prRule>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prAnte name="," org.eventb.core.prGoal="p136">
+                                                                                <org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p136" org.eventb.core.prHyps="p2"/>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prAnte name="-" org.eventb.core.prGoal="p137">
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with blpt={B,E,G}" org.eventb.core.prHyps="p4">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p118"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p119"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p120" org.eventb.core.prInfHyps="p121"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p122" org.eventb.core.prInfHyps="p123"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p108" org.eventb.core.prInfHyps="p124"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p114" org.eventb.core.prInfHyps="p125"/>
+                                                                                        <org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p2,p3,p120,p122,p108,p114"/>
+                                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prHyps="p7">
+                                                                                            <org.eventb.core.prAnte name="'">
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p118" org.eventb.core.prInfHyps="p126"/>
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p119" org.eventb.core.prInfHyps="p127"/>
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p124" org.eventb.core.prInfHyps="p128"/>
+                                                                                                <org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p118,p119,p124"/>
+                                                                                                <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p137" org.eventb.core.prHyps="p127">
+                                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p125">
+                                                                                                        <org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p125" org.eventb.core.prHyps="p125"/>
+                                                                                                    </org.eventb.core.prAnte>
+                                                                                                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                                                    <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e1"/>
+                                                                                                </org.eventb.core.prRule>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prAnte name="." org.eventb.core.prGoal="p138">
+                                                                                <org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p138" org.eventb.core.prHyps="p3"/>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prAnte name="/" org.eventb.core.prGoal="p139">
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with blpt={B,E,G}" org.eventb.core.prHyps="p4">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p118"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p119"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p120" org.eventb.core.prInfHyps="p121"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p122" org.eventb.core.prInfHyps="p123"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p108" org.eventb.core.prInfHyps="p124"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p114" org.eventb.core.prInfHyps="p125"/>
+                                                                                        <org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p2,p3,p120,p122,p108,p114"/>
+                                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prGoal="p139" org.eventb.core.prHyps="p7">
+                                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p140">
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p118" org.eventb.core.prInfHyps="p126"/>
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p119" org.eventb.core.prInfHyps="p127"/>
+                                                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p124" org.eventb.core.prInfHyps="p128"/>
+                                                                                                <org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p118,p119,p124"/>
+                                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}" org.eventb.core.prGoal="p140" org.eventb.core.prHyps="p44">
+                                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p141"/>
+                                                                                                </org.eventb.core.prRule>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=E"/>
+        <org.eventb.core.prPred name="p126" org.eventb.core.predicate="lft∈{B,E,G} → {A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p112" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·b∈blpt∧b ↦ r∈rtbl⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈dom(nxt(r))∧nxt(r)∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS∧(nxt(r)(b)∈{lft(b),rht(b)}∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈ran(nxt(r))∧(nxt(r))∼∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS))"/>
+        <org.eventb.core.prPred name="p118" org.eventb.core.predicate="lft∈{B,E,G} → BLOCKS"/>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬F=H"/>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R2=R8"/>
+        <org.eventb.core.prPred name="p139" org.eventb.core.predicate="nxt(r)(b)∈{lft(b),rht(b)}∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈ran(nxt(r))∧(nxt(r))∼∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p123" org.eventb.core.predicate="{B,E,G}∩ran(lst)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬D=I"/>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}"/>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=G"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=C"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R5"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=F"/>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬S4=S5">
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R6"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R4"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬E=G"/>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬S1=S5">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬S3=S5">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})"/>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R4=R8"/>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="S={S1,S2,S3,S4,S5}">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬C=G"/>
+        <org.eventb.core.prPred name="p121" org.eventb.core.predicate="{B,E,G}∩ran(fst)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p114" org.eventb.core.predicate="b∈blpt">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬G=H"/>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R6=R7"/>
+        <org.eventb.core.prPred name="p130" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p110" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p131" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=F"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬E=H"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R5"/>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·b∈blpt∧r∈ROUTES∧b ↦ r∈rtbl⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈dom(nxt(r))∧nxt(r)∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS∧(nxt(r)(b)∈{lft(b),rht(b)}∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈ran(nxt(r))∧(nxt(r))∼∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS))"/>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬R6=R8"/>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R4"/>
+        <org.eventb.core.prPred name="p120" org.eventb.core.predicate="blpt∩ran(fst)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=D"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R2=R7"/>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬S2=S3">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p134" org.eventb.core.predicate="nxt(r)∈{A,B,C,D,E,F,G,H,I} ⇸ {A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬C=I"/>
+        <org.eventb.core.prPred name="p125" org.eventb.core.predicate="b∈{B,E,G}">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p119" org.eventb.core.predicate="rht∈{B,E,G} → BLOCKS"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=F"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p124" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈{B,E,G} ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬H=I"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="blpt={B,E,G}"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R3"/>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=B"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R5=R7"/>
+        <org.eventb.core.prPred name="p129" org.eventb.core.predicate="r∈ROUTES">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=C"/>
+        <org.eventb.core.prPred name="p122" org.eventb.core.predicate="blpt∩ran(lst)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬F=I"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R3=R8"/>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬S2=S4">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R5"/>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R6"/>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬S1=S2">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=F"/>
+        <org.eventb.core.prPred name="p115" org.eventb.core.predicate="b ↦ r∈rtbl">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬S1=S3">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p132" org.eventb.core.predicate="b∈dom(nxt(r))">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p137" org.eventb.core.predicate="b∈dom(rht)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="rht∈blpt → BLOCKS"/>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬S3=S4">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=E"/>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R5=R8"/>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=F"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R4"/>
+        <org.eventb.core.prPred name="p108" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="lft∈blpt → BLOCKS"/>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=D"/>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬S2=S5">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p135" org.eventb.core.predicate="b∈dom(lft)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·b∈blpt∧r∈ROUTES∧b ↦ r∈rtbl⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈dom(nxt(r))∧nxt(r)∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS∧(nxt(r)(b)∈{lft(b),rht(b)}∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈dom((nxt(r))∼)∧(nxt(r))∼∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS))"/>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬E=I"/>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="blpt⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p111" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬G=I"/>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬D=G"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R5"/>
+        <org.eventb.core.prPred name="p109" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}"/>
+        <org.eventb.core.prPred name="p116" org.eventb.core.predicate="r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈dom(nxt(r))∧nxt(r)∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS∧(nxt(r)(b)∈{lft(b),rht(b)}∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈ran(nxt(r))∧(nxt(r))∼∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS))">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬F=G"/>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬R7=R8"/>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p138" org.eventb.core.predicate="rht∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R1=R8"/>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=H"/>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=H"/>
+        <org.eventb.core.prPred name="p113" org.eventb.core.predicate="b∈blpt∧b ↦ r∈rtbl⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈dom(nxt(r))∧nxt(r)∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS∧(nxt(r)(b)∈{lft(b),rht(b)}∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈ran(nxt(r))∧(nxt(r))∼∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS))">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬S1=S4">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p133" org.eventb.core.predicate="nxt(r)∈BLOCKS ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·b∈blpt∧⊤∧b ↦ r∈rtbl⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈dom(nxt(r))∧nxt(r)∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS∧(nxt(r)(b)∈{lft(b),rht(b)}∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈ran(nxt(r))∧(nxt(r))∼∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS))"/>
+        <org.eventb.core.prPred name="p141" org.eventb.core.predicate="nxt(r)(b)∈{lft(b),rht(b)}∨(r∈dom(nxt)∧nxt∈{R1,R2,R3,R4,R5,R6,R7,R8} ⇸ ℙ({A,B,C,D,E,F,G,H,I} × {A,B,C,D,E,F,G,H,I})∧b∈ran(nxt(r))∧(nxt(r))∼∈{A,B,C,D,E,F,G,H,I} ⇸ {A,B,C,D,E,F,G,H,I}∧b∈dom(lft)∧lft∈{A,B,C,D,E,F,G,H,I} ⇸ {A,B,C,D,E,F,G,H,I}∧b∈dom(rht)∧rht∈{A,B,C,D,E,F,G,H,I} ⇸ {A,B,C,D,E,F,G,H,I})">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬C=H"/>
+        <org.eventb.core.prPred name="p140" org.eventb.core.predicate="nxt(r)(b)∈{lft(b),rht(b)}∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ({A,B,C,D,E,F,G,H,I} × {A,B,C,D,E,F,G,H,I})∧b∈ran(nxt(r))∧(nxt(r))∼∈{A,B,C,D,E,F,G,H,I} ⇸ {A,B,C,D,E,F,G,H,I}∧b∈dom(lft)∧lft∈{A,B,C,D,E,F,G,H,I} ⇸ {A,B,C,D,E,F,G,H,I}∧b∈dom(rht)∧rht∈{A,B,C,D,E,F,G,H,I} ⇸ {A,B,C,D,E,F,G,H,I})">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p128" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈{B,E,G} ⇸ {A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬D=H"/>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R1=R7"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=D"/>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=E"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R5=R6"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R2"/>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R4=R7"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=I"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R6"/>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬A=I"/>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=E"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R6"/>
+        <org.eventb.core.prPred name="p136" org.eventb.core.predicate="lft∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R3=R7"/>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})"/>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=G"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p107" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R3"/>
+        <org.eventb.core.prPred name="p127" org.eventb.core.predicate="rht∈{B,E,G} → {A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p117" org.eventb.core.predicate="r∈dom(nxt)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prExpr name="e1" org.eventb.core.expression="{B,E,G}"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="leuschel_axiom/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="b,r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p2"/>
+                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
+                        <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(S,{S1},{S2},{S3},{S4},{S5}))" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81"/>
+                                <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p70"/>
+                                <org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'">
+                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p83"/>
+                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p82"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p85"/>
+                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p84"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p86"/>
+                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p89"/>
+                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p88"/>
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p101">
+                                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p90"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p91" org.eventb.core.prInfHyps="p92"/>
+                                                <org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p91"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p94"/>
+                                                <org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p93"/>
+                                                <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p95"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p97"/>
+                                                <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p96"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p98"/>
+                                                <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p83"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p99"/>
+                                                <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p85"/>
+                                                <org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p100"/>
+                                                <org.eventb.core.prHypAction name="HIDE13" org.eventb.core.prHyps="p87"/>
+                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p101" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p108">
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p102"/>
+                                                        <org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p92"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p103"/>
+                                                        <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p94"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p104"/>
+                                                        <org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p97"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p98" org.eventb.core.prInfHyps="p105"/>
+                                                        <org.eventb.core.prHypAction name="HIDE7" org.eventb.core.prHyps="p98"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p99" org.eventb.core.prInfHyps="p106"/>
+                                                        <org.eventb.core.prHypAction name="HIDE9" org.eventb.core.prHyps="p99"/>
+                                                        <org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p100" org.eventb.core.prInfHyps="p107"/>
+                                                        <org.eventb.core.prHypAction name="HIDE11" org.eventb.core.prHyps="p100"/>
+                                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees b,r)" org.eventb.core.prGoal="p108" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p109">
+                                                                <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+                                                                <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p109" org.eventb.core.prHyps="">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p112" org.eventb.core.prHyps="p110,p111">
+                                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with blpt={B,E,G}" org.eventb.core.prHyps="p1">
+                                                                            <org.eventb.core.prAnte name="'">
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p113" org.eventb.core.prInfHyps="p114"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p115" org.eventb.core.prInfHyps="p116"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p117" org.eventb.core.prInfHyps="p118"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p119" org.eventb.core.prInfHyps="p120"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p104" org.eventb.core.prInfHyps="p121"/>
+                                                                                <org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p110" org.eventb.core.prInfHyps="p122"/>
+                                                                                <org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p113,p115,p117,p119,p104,p110"/>
+                                                                                <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with BLOCKS={A,B,C,D,E,F,G,H,I}" org.eventb.core.prHyps="p3">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p114" org.eventb.core.prInfHyps="p123"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p116" org.eventb.core.prInfHyps="p124"/>
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p121" org.eventb.core.prInfHyps="p125"/>
+                                                                                        <org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p114,p116,p121"/>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·⊤∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬D=E"/>
+        <org.eventb.core.prPred name="p123" org.eventb.core.predicate="lft∈{B,E,G} → {A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p114" org.eventb.core.predicate="lft∈{B,E,G} → BLOCKS"/>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬F=H"/>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p120" org.eventb.core.predicate="{B,E,G}∩ran(lst)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=I"/>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=G"/>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬B=C"/>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=F"/>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬S4=S5">
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬E=G"/>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬S1=S5">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·b∈blpt∧r∈ROUTES∧b ↦ r∈rtbl⇒nxt(r)(b)∈{lft(b),rht(b)}∨(nxt(r))∼(b)∈{lft(b),rht(b)}"/>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬S3=S5">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="S={S1,S2,S3,S4,S5}">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬C=G"/>
+        <org.eventb.core.prPred name="p118" org.eventb.core.predicate="{B,E,G}∩ran(fst)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p110" org.eventb.core.predicate="b∈blpt">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬G=H"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬B=F"/>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬E=H"/>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p117" org.eventb.core.predicate="blpt∩ran(fst)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p108" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·b∈blpt∧b ↦ r∈rtbl⇒nxt(r)(b)∈{lft(b),rht(b)}∨(nxt(r))∼(b)∈{lft(b),rht(b)}"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬A=D"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬S2=S3">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=I"/>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p122" org.eventb.core.predicate="b∈{B,E,G}">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p116" org.eventb.core.predicate="rht∈{B,E,G} → BLOCKS"/>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬C=F"/>
+        <org.eventb.core.prPred name="p121" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈{B,E,G} ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p109" org.eventb.core.predicate="b∈blpt∧b ↦ r∈rtbl⇒nxt(r)(b)∈{lft(b),rht(b)}∨(nxt(r))∼(b)∈{lft(b),rht(b)}">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬H=I"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="blpt={B,E,G}"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬A=B"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬A=C"/>
+        <org.eventb.core.prPred name="p119" org.eventb.core.predicate="blpt∩ran(lst)=(∅ ⦂ ℙ(BLOCKS))">
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬F=I"/>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬S2=S4">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬S1=S2">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬E=F"/>
+        <org.eventb.core.prPred name="p111" org.eventb.core.predicate="b ↦ r∈rtbl">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬S1=S3">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p112" org.eventb.core.predicate="nxt(r)(b)∈{lft(b),rht(b)}∨(nxt(r))∼(b)∈{lft(b),rht(b)}">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p115" org.eventb.core.predicate="rht∈blpt → BLOCKS"/>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬S3=S4">
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬C=E"/>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬D=F"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p113" org.eventb.core.predicate="lft∈blpt → BLOCKS"/>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬C=D"/>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬S2=S5">
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬E=I"/>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="blpt⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p107" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬G=I"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬D=G"/>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬F=G"/>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆BLOCKS∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·b∈blpt∧⊤∧b ↦ r∈rtbl⇒nxt(r)(b)∈{lft(b),rht(b)}∨(nxt(r))∼(b)∈{lft(b),rht(b)}"/>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=H"/>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=H"/>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬S1=S4">
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=H"/>
+        <org.eventb.core.prPred name="p125" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈{B,E,G} ⇸ {A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬D=H"/>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬B=D"/>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬B=E"/>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=I"/>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=I"/>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬A=E"/>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=G"/>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p124" org.eventb.core.predicate="rht∈{B,E,G} → {A,B,C,D,E,F,G,H,I}"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL3:1"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+    </org.eventb.core.prProof>
+    <org.eventb.core.prProof name="prob_axm2/THM"/>
+</org.eventb.core.prFile>
diff --git a/Train_B_Book/train_ctx2.bps b/Train_B_Book/train_ctx2.bps
new file mode 100644
index 0000000000000000000000000000000000000000..6890ceb57e2c57beb26f8be64e9512bca2bfa264
--- /dev/null
+++ b/Train_B_Book/train_ctx2.bps
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.psFile>
+    <org.eventb.core.psStatus name="axm5/WD" org.eventb.core.confidence="1000" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+</org.eventb.core.psFile>
diff --git a/Train_B_Book/train_ctx2.buc b/Train_B_Book/train_ctx2.buc
new file mode 100644
index 0000000000000000000000000000000000000000..0a35af0545be73a6e16e271ceb00c6241af9dcf6
--- /dev/null
+++ b/Train_B_Book/train_ctx2.buc
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.contextFile org.eventb.core.configuration="org.eventb.core.fwd" org.eventb.texttools.text_lastmodified="1390836410758" org.eventb.texttools.text_representation="context train_ctx2 extends train_ctx1&#10;&#10;constants blpt lft rht&#10;&#10;axioms&#10;   @axm1 blpt ⊆ BLOCKS  // blocks with points: sets of blocks containing points&#10;   @axm2 lft ∈ blpt → BLOCKS&#10;   @axm3 rht ∈ blpt → BLOCKS&#10;   @axm4 lft ∩ rht = ∅&#10;   @axm5 ∀r·r∈ROUTES ⇒ (lft ∪ rht) ∩ (nxt(r) ∪ (nxt(r))∼) ∈ blpt⇸BLOCKS&#10;   @axm6 blpt ∩ ran(fst) = ∅&#10;   @axm7 blpt ∩ ran(lst) = ∅&#10;&#10;end&#10;" version="3">
+<org.eventb.core.extendsContext name="internal_extendsContext1" org.eventb.core.target="train_ctx1"/>
+<org.eventb.core.axiom name="internal_axm1A" org.eventb.core.comment="blocks with points: sets of blocks containing points" org.eventb.core.label="axm1" org.eventb.core.predicate="blpt ⊆ BLOCKS"/>
+<org.eventb.core.axiom name="internal_axm2A" org.eventb.core.label="axm2" org.eventb.core.predicate="lft ∈ blpt → BLOCKS"/>
+<org.eventb.core.axiom name="internal_axm3A" org.eventb.core.label="axm3" org.eventb.core.predicate="rht ∈ blpt → BLOCKS"/>
+<org.eventb.core.axiom name="internal_axm4A" org.eventb.core.label="axm4" org.eventb.core.predicate="lft ∩ rht = ∅"/>
+<org.eventb.core.axiom name="internal_axm5A" org.eventb.core.label="axm5" org.eventb.core.predicate="∀r·r∈ROUTES ⇒ (lft ∪ rht) ∩ (nxt(r) ∪ (nxt(r))∼) ∈ blpt⇸BLOCKS"/>
+<org.eventb.core.axiom name="internal_axm6A" org.eventb.core.label="axm6" org.eventb.core.predicate="blpt ∩ ran(fst) = ∅"/>
+<org.eventb.core.axiom name="internal_axm7A" org.eventb.core.label="axm7" org.eventb.core.predicate="blpt ∩ ran(lst) = ∅"/>
+<org.eventb.core.constant name="internal_cst1" org.eventb.core.identifier="blpt"/>
+<org.eventb.core.constant name="internal_cst2" org.eventb.core.identifier="lft"/>
+<org.eventb.core.constant name="internal_cst3" org.eventb.core.identifier="rht"/>
+</org.eventb.core.contextFile>
diff --git a/Train_B_Book/train_ctx2_beebook.bcc b/Train_B_Book/train_ctx2_beebook.bcc
new file mode 100644
index 0000000000000000000000000000000000000000..afe740f10f39ad80be7d646fa4c96f56f1bc3716
--- /dev/null
+++ b/Train_B_Book/train_ctx2_beebook.bcc
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scContextFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase;de.prob.units.mchBase">
+    <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx2.bcc|org.eventb.core.scContextFile#train_ctx2" org.eventb.core.source="/Train/train_ctx2_beebook.buc|org.eventb.core.contextFile#train_ctx2_beebook|org.eventb.core.extendsContext#_MRgjEIdsEeOYLZrGGNvfWA"/>
+    <org.eventb.core.scExtendsContext name="(" org.eventb.core.scTarget="/Train/train_ctx1_beebook.bcc|org.eventb.core.scContextFile#train_ctx1_beebook" org.eventb.core.source="/Train/train_ctx2_beebook.buc|org.eventb.core.contextFile#train_ctx2_beebook|org.eventb.core.extendsContext#_MRgjEYdsEeOYLZrGGNvfWA"/>
+    <org.eventb.core.scInternalContext name="train_ctx0">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx1">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.extendsContext#internal_extendsContext1"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm1" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scCarrierSet name="S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.carrierSet#internal_cst1" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.scConstant name="SIG" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx2">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx1.bcc|org.eventb.core.scContextFile#train_ctx1" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.extendsContext#internal_extendsContext1"/>
+        <org.eventb.core.scAxiom name="train_ctx2" org.eventb.core.label="axm1" org.eventb.core.predicate="blpt⊆BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx3" org.eventb.core.label="axm2" org.eventb.core.predicate="lft∈blpt → BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx4" org.eventb.core.label="axm3" org.eventb.core.predicate="rht∈blpt → BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx5" org.eventb.core.label="axm4" org.eventb.core.predicate="lft∩rht=(∅ ⦂ ℙ(BLOCKS×BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx6" org.eventb.core.label="axm5" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx7" org.eventb.core.label="axm6" org.eventb.core.predicate="blpt∩ran(fst)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx8" org.eventb.core.label="axm7" org.eventb.core.predicate="blpt∩ran(lst)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rht" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.scConstant name="lft" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.scConstant name="blpt" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx0_beebook">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.extendsContext#'"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm44" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx2" org.eventb.core.label="axm45" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAYdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx3" org.eventb.core.label="compute_rtbl_from_nxt" org.eventb.core.predicate="rtbl={b⦂BLOCKS,r⦂ROUTES·r∈dom(nxt)∧(b∈dom(nxt(r))∨b∈ran(nxt(r))) ∣ b ↦ r}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_tx3w0YdrEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx4" org.eventb.core.label="axm40" org.eventb.core.predicate="nxt={R1 ↦ {L ↦ A,A ↦ B,B ↦ C},R2 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ E,E ↦ F,F ↦ G},R3 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ K,K ↦ J,J ↦ N},R4 ↦ {M ↦ H,H ↦ I,I ↦ K,K ↦ F,F ↦ G},R5 ↦ {M ↦ H,H ↦ I,I ↦ J,J ↦ N},R6 ↦ {C ↦ B,B ↦ A,A ↦ L},R7 ↦ {G ↦ F,F ↦ E,E ↦ D,D ↦ B,B ↦ A,A ↦ L},R8 ↦ {N ↦ J,J ↦ K,K ↦ D,D ↦ B,B ↦ A,A ↦ L},R9 ↦ {G ↦ F,F ↦ K,K ↦ I,I ↦ H,H ↦ M},R10 ↦ {N ↦ J,J ↦ I,I ↦ H,H ↦ M}}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LA4doEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx5" org.eventb.core.label="axm41" org.eventb.core.predicate="fst={R1 ↦ L,R2 ↦ L,R3 ↦ L,R4 ↦ M,R5 ↦ M,R6 ↦ C,R7 ↦ G,R8 ↦ N,R9 ↦ G,R10 ↦ N}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LBIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx6" org.eventb.core.label="axm42" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ G,R3 ↦ N,R4 ↦ G,R5 ↦ N,R6 ↦ L,R7 ↦ L,R8 ↦ L,R9 ↦ M,R10 ↦ M}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5yEIdoEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="A" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwIdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="B" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwYdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="C" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uwodoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="D" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uw4doEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="E" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uxIdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="F" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj2uxYdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="G" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="H" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="I" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V0odoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="J" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V04doEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="K" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V1IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="L" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3V1YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="M" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384IdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="N" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384YdoEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="R10" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j9YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R1" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj384odoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R2" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj3844doEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R3" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj385IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R4" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj385YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R5" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R6" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8YdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R7" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j8odoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R8" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j84doEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R9" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.constant#_uj4j9IdoEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx1_beebook">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx1.bcc|org.eventb.core.scContextFile#train_ctx1" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.extendsContext#_5SetQIdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.scExtendsContext name="(" org.eventb.core.scTarget="/Train/train_ctx0_beebook.bcc|org.eventb.core.scContextFile#train_ctx0_beebook" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.extendsContext#_5SetQYdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.scAxiom name="train_ctx0_beebool" org.eventb.core.label="axm2" org.eventb.core.predicate="card(S)=5" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5SfUU4drEeOYLZrGGNvfWA" org.eventb.core.theorem="true"/>
+        <org.eventb.core.scAxiom name="train_ctx0_beeboom" org.eventb.core.label="axm3" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5Sf7YIdrEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx0_beeboon" org.eventb.core.label="axm4" org.eventb.core.predicate="SIG={L ↦ S1,M ↦ S2,N ↦ S3,C ↦ S4,G ↦ S5}" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5Sf7YYdrEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="S1" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SetQodrEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+        <org.eventb.core.scConstant name="S2" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SetQ4drEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+        <org.eventb.core.scConstant name="S3" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SfUUIdrEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+        <org.eventb.core.scConstant name="S4" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SfUUYdrEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+        <org.eventb.core.scConstant name="S5" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.constant#_5SfUUodrEeOYLZrGGNvfWA" org.eventb.core.type="S"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scAxiom name="train_ctx1_beebool" org.eventb.core.label="prob_axm1" org.eventb.core.predicate="blpt={B,D,F,I,J}" org.eventb.core.source="/Train/train_ctx2_beebook.buc|org.eventb.core.contextFile#train_ctx2_beebook|org.eventb.core.axiom#_MRgjEodsEeOYLZrGGNvfWA" org.eventb.core.theorem="false"/>
+</org.eventb.core.scContextFile>
diff --git a/Train_B_Book/train_ctx2_beebook.bpo b/Train_B_Book/train_ctx2_beebook.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..4353435a549d1e72bdccf45308152fccd1204e18
--- /dev/null
+++ b/Train_B_Book/train_ctx2_beebook.bpo
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTET" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEU" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEV" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEW" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEX" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEY" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEZ" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="ROUTE[" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+        <org.eventb.core.poPredicate name="ROUTE\" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poPredicate name="ROUTE]" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poPredicate name="ROUTE^" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poPredicate name="ROUTE_" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poPredicate name="ROUTE`" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+        <org.eventb.core.poIdentifier name="S" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.poIdentifier name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        <org.eventb.core.poPredicate name="ROUTEa" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poIdentifier name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTEb" org.eventb.core.predicate="blpt⊆BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEc" org.eventb.core.predicate="lft∈blpt → BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEd" org.eventb.core.predicate="rht∈blpt → BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEe" org.eventb.core.predicate="lft∩rht=(∅ ⦂ ℙ(BLOCKS×BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEf" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEg" org.eventb.core.predicate="blpt∩ran(fst)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEh" org.eventb.core.predicate="blpt∩ran(lst)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poIdentifier name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="J" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="K" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="L" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="M" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="N" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="R10" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R2" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R3" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R4" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R5" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R6" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R7" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R8" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R9" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poPredicate name="ROUTEi" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I},{J},{K},{L},{M},{N})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEj" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10})" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LAYdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEk" org.eventb.core.predicate="rtbl={b⦂BLOCKS,r⦂ROUTES·r∈dom(nxt)∧(b∈dom(nxt(r))∨b∈ran(nxt(r))) ∣ b ↦ r}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_tx3w0YdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poPredicate name="ROUTEl" org.eventb.core.predicate="nxt={R1 ↦ {L ↦ A,A ↦ B,B ↦ C},R2 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ E,E ↦ F,F ↦ G},R3 ↦ {L ↦ A,A ↦ B,B ↦ D,D ↦ K,K ↦ J,J ↦ N},R4 ↦ {M ↦ H,H ↦ I,I ↦ K,K ↦ F,F ↦ G},R5 ↦ {M ↦ H,H ↦ I,I ↦ J,J ↦ N},R6 ↦ {C ↦ B,B ↦ A,A ↦ L},R7 ↦ {G ↦ F,F ↦ E,E ↦ D,D ↦ B,B ↦ A,A ↦ L},R8 ↦ {N ↦ J,J ↦ K,K ↦ D,D ↦ B,B ↦ A,A ↦ L},R9 ↦ {G ↦ F,F ↦ K,K ↦ I,I ↦ H,H ↦ M},R10 ↦ {N ↦ J,J ↦ I,I ↦ H,H ↦ M}}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LA4doEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEm" org.eventb.core.predicate="fst={R1 ↦ L,R2 ↦ L,R3 ↦ L,R4 ↦ M,R5 ↦ M,R6 ↦ C,R7 ↦ G,R8 ↦ N,R9 ↦ G,R10 ↦ N}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5LBIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEn" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ G,R3 ↦ N,R4 ↦ G,R5 ↦ N,R6 ↦ L,R7 ↦ L,R8 ↦ L,R9 ↦ M,R10 ↦ M}" org.eventb.core.source="/Train/train_ctx0_beebook.buc|org.eventb.core.contextFile#train_ctx0_beebook|org.eventb.core.axiom#_uj5yEIdoEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poIdentifier name="S1" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S2" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S3" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S4" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S5" org.eventb.core.type="S"/>
+        <org.eventb.core.poPredicate name="ROUTEo" org.eventb.core.predicate="card(S)=5" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5SfUU4drEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poPredicate name="ROUTEp" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5Sf7YIdrEeOYLZrGGNvfWA"/>
+        <org.eventb.core.poPredicate name="ROUTEq" org.eventb.core.predicate="SIG={L ↦ S1,M ↦ S2,N ↦ S3,C ↦ S4,G ↦ S5}" org.eventb.core.source="/Train/train_ctx1_beebook.buc|org.eventb.core.contextFile#train_ctx1_beebook|org.eventb.core.axiom#_5Sf7YYdrEeOYLZrGGNvfWA"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_ctx2_beebook.bpo|org.eventb.core.poFile#train_ctx2_beebook|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="blpt={B,D,F,I,J}" org.eventb.core.source="/Train/train_ctx2_beebook.buc|org.eventb.core.contextFile#train_ctx2_beebook|org.eventb.core.axiom#_MRgjEodsEeOYLZrGGNvfWA"/>
+    </org.eventb.core.poPredicateSet>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_ctx2_beebook.bpr b/Train_B_Book/train_ctx2_beebook.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..d13ec2a20267852024def0758a1effc175861a98
--- /dev/null
+++ b/Train_B_Book/train_ctx2_beebook.bpr
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.prFile version="1"/>
\ No newline at end of file
diff --git a/Train_B_Book/train_ctx2_beebook.bps b/Train_B_Book/train_ctx2_beebook.bps
new file mode 100644
index 0000000000000000000000000000000000000000..ced513e210f482c3c7cafb26e5e709e8b27ac922
--- /dev/null
+++ b/Train_B_Book/train_ctx2_beebook.bps
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<org.eventb.core.psFile/>
\ No newline at end of file
diff --git a/Train_B_Book/train_ctx2_beebook.buc b/Train_B_Book/train_ctx2_beebook.buc
new file mode 100644
index 0000000000000000000000000000000000000000..1e450d848ae4a7b128ee0d78f95c54049ee00728
--- /dev/null
+++ b/Train_B_Book/train_ctx2_beebook.buc
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.contextFile org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase;de.prob.units.mchBase" org.eventb.texttools.text_lastmodified="1390838450106" org.eventb.texttools.text_representation="context train_ctx2_beebook extends train_ctx2 train_ctx1_beebook&#10;axioms&#10;   @prob_axm1 blpt = {B,D,F,I,J}&#10;end&#10;" version="3">
+<org.eventb.core.extendsContext name="_MRgjEIdsEeOYLZrGGNvfWA" org.eventb.core.target="train_ctx2"/>
+<org.eventb.core.extendsContext name="_MRgjEYdsEeOYLZrGGNvfWA" org.eventb.core.target="train_ctx1_beebook"/>
+<org.eventb.core.axiom name="_MRgjEodsEeOYLZrGGNvfWA" org.eventb.core.label="prob_axm1" org.eventb.core.predicate="blpt = {B,D,F,I,J}"/>
+</org.eventb.core.contextFile>
diff --git a/Train_B_Book/train_ctx2_prob.bcc b/Train_B_Book/train_ctx2_prob.bcc
new file mode 100644
index 0000000000000000000000000000000000000000..077378c032e1c3a97510e0bb9113ad87b4b0a03c
--- /dev/null
+++ b/Train_B_Book/train_ctx2_prob.bcc
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.scContextFile org.eventb.core.accurate="true" org.eventb.core.configuration="org.eventb.core.fwd">
+    <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx2.bcc|org.eventb.core.scContextFile#train_ctx2" org.eventb.core.source="/Train/train_ctx2_prob.buc|org.eventb.core.contextFile#train_ctx2_prob|org.eventb.core.extendsContext#'"/>
+    <org.eventb.core.scExtendsContext name="(" org.eventb.core.scTarget="/Train/train_ctx1_prob.bcc|org.eventb.core.scContextFile#train_ctx1_prob" org.eventb.core.source="/Train/train_ctx2_prob.buc|org.eventb.core.contextFile#train_ctx2_prob|org.eventb.core.extendsContext#_bpQicIdnEeOcUOZ5WAG6MA"/>
+    <org.eventb.core.scInternalContext name="train_ctx0">
+        <org.eventb.core.scAxiom name="'" org.eventb.core.label="axm1" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="(" org.eventb.core.label="axm2" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name=")" org.eventb.core.label="axm3" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="*" org.eventb.core.label="axm4" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="+" org.eventb.core.label="axm5" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="," org.eventb.core.label="axm6" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="-" org.eventb.core.label="axm7" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="." org.eventb.core.label="axm8" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="/" org.eventb.core.label="axm11" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="0" org.eventb.core.label="axm10" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="1" org.eventb.core.label="axm9" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="2" org.eventb.core.label="axm12" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="3" org.eventb.core.label="axm13" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.scCarrierSet name="ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm145" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.scConstant name="lst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst4" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scConstant name="nxt" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.scConstant name="fst" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.scCarrierSet name="BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.carrierSet#internal_axm13}" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx1">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.extendsContext#internal_extendsContext1"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm1" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scCarrierSet name="S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.carrierSet#internal_cst1" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.scConstant name="SIG" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx2">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx1.bcc|org.eventb.core.scContextFile#train_ctx1" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.extendsContext#internal_extendsContext1"/>
+        <org.eventb.core.scAxiom name="train_ctx2" org.eventb.core.label="axm1" org.eventb.core.predicate="blpt⊆BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm1A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx3" org.eventb.core.label="axm2" org.eventb.core.predicate="lft∈blpt → BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm2A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx4" org.eventb.core.label="axm3" org.eventb.core.predicate="rht∈blpt → BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm3A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx5" org.eventb.core.label="axm4" org.eventb.core.predicate="lft∩rht=(∅ ⦂ ℙ(BLOCKS×BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm4A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx6" org.eventb.core.label="axm5" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm5A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx7" org.eventb.core.label="axm6" org.eventb.core.predicate="blpt∩ran(fst)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm6A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx8" org.eventb.core.label="axm7" org.eventb.core.predicate="blpt∩ran(lst)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm7A" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="rht" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.constant#internal_cst3" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.scConstant name="lft" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.constant#internal_cst2" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.scConstant name="blpt" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.constant#internal_cst1" org.eventb.core.type="ℙ(BLOCKS)"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx0_prob">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx0.bcc|org.eventb.core.scContextFile#train_ctx0" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.extendsContext#'"/>
+        <org.eventb.core.scAxiom name="train_ctx1" org.eventb.core.label="axm44" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4thEYdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx2" org.eventb.core.label="axm45" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIIdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx3" org.eventb.core.label="axm14" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIYdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx4" org.eventb.core.label="axm40" org.eventb.core.predicate="nxt={R1 ↦ {A ↦ B,B ↦ C},R2 ↦ {A ↦ B,B ↦ D,D ↦ E,E ↦ F},R3 ↦ {H ↦ G,G ↦ E,E ↦ F},R4 ↦ {I ↦ G,G ↦ E,E ↦ F},R5 ↦ {C ↦ B,B ↦ A},R6 ↦ {F ↦ E,E ↦ D,D ↦ B,B ↦ A},R7 ↦ {F ↦ E,E ↦ G,G ↦ H},R8 ↦ {F ↦ E,E ↦ G,G ↦ I}}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMIdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx5" org.eventb.core.label="axm41" org.eventb.core.predicate="fst={R1 ↦ A,R2 ↦ A,R3 ↦ H,R4 ↦ I,R5 ↦ C,R6 ↦ F,R7 ↦ F,R8 ↦ F}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMYdmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx6" org.eventb.core.label="axm42" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ F,R3 ↦ F,R4 ↦ F,R5 ↦ A,R6 ↦ A,R7 ↦ H,R8 ↦ I}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvModmEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="A" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4qdwYdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="B" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4qdwodmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="C" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rE0IdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="D" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rE0YdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="E" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rE0odmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="F" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr4IdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="G" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr4YdmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="H" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr4odmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="I" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4rr44dmEeOcUOZ5WAG6MA" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.scConstant name="R1" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4sS8IdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R2" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4sS8YdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R3" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4sS8odmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R4" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6AIdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R5" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6AYdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R6" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6AodmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R7" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4s6A4dmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.scConstant name="R8" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.constant#_y4thEIdmEeOcUOZ5WAG6MA" org.eventb.core.type="ROUTES"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scInternalContext name="train_ctx1_prob">
+        <org.eventb.core.scExtendsContext name="'" org.eventb.core.scTarget="/Train/train_ctx1.bcc|org.eventb.core.scContextFile#train_ctx1" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.extendsContext#'"/>
+        <org.eventb.core.scExtendsContext name="(" org.eventb.core.scTarget="/Train/train_ctx0_prob.bcc|org.eventb.core.scContextFile#train_ctx0_prob" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.extendsContext#_PkKY4IdnEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.scAxiom name="train_ctx0_proc" org.eventb.core.label="axm2" org.eventb.core.predicate="card(S)=5" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.axiom#_K6L9EIdnEeOcUOZ5WAG6MA" org.eventb.core.theorem="true"/>
+        <org.eventb.core.scAxiom name="train_ctx0_prod" org.eventb.core.label="axm3" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.axiom#_K6L9EYdnEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scAxiom name="train_ctx0_proe" org.eventb.core.label="axm4" org.eventb.core.predicate="SIG={A ↦ S1,H ↦ S2,I ↦ S3,C ↦ S4,F ↦ S5}" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.axiom#_K6L9EodnEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+        <org.eventb.core.scConstant name="S1" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.constant#_K6LWAIdnEeOcUOZ5WAG6MA" org.eventb.core.type="S"/>
+        <org.eventb.core.scConstant name="S2" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.constant#_K6LWAYdnEeOcUOZ5WAG6MA" org.eventb.core.type="S"/>
+        <org.eventb.core.scConstant name="S3" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.constant#_K6LWAodnEeOcUOZ5WAG6MA" org.eventb.core.type="S"/>
+        <org.eventb.core.scConstant name="S4" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.constant#_K6LWA4dnEeOcUOZ5WAG6MA" org.eventb.core.type="S"/>
+        <org.eventb.core.scConstant name="S5" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.constant#_K6LWBIdnEeOcUOZ5WAG6MA" org.eventb.core.type="S"/>
+    </org.eventb.core.scInternalContext>
+    <org.eventb.core.scAxiom name="train_ctx1_proc" org.eventb.core.label="prob_axm1" org.eventb.core.predicate="blpt={B,E,G}" org.eventb.core.source="/Train/train_ctx2_prob.buc|org.eventb.core.contextFile#train_ctx2_prob|org.eventb.core.axiom#_aAAssIdnEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="train_ctx1_prod" org.eventb.core.label="prob_axm2" org.eventb.core.predicate="lft={B ↦ C,G ↦ I,E ↦ G}∧rht={B ↦ D,G ↦ H,E ↦ D}" org.eventb.core.source="/Train/train_ctx2_prob.buc|org.eventb.core.contextFile#train_ctx2_prob|org.eventb.core.axiom#_aAAssYdnEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+    <org.eventb.core.scAxiom name="train_ctx1_proe" org.eventb.core.label="leuschel_axiom" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·b∈blpt∧r∈ROUTES∧b ↦ r∈rtbl⇒nxt(r)(b)∈{lft(b),rht(b)}∨(nxt(r))∼(b)∈{lft(b),rht(b)}" org.eventb.core.source="/Train/train_ctx2_prob.buc|org.eventb.core.contextFile#train_ctx2_prob|org.eventb.core.axiom#_aABTwIdnEeOcUOZ5WAG6MA" org.eventb.core.theorem="false"/>
+</org.eventb.core.scContextFile>
diff --git a/Train_B_Book/train_ctx2_prob.bpo b/Train_B_Book/train_ctx2_prob.bpo
new file mode 100644
index 0000000000000000000000000000000000000000..d4aed49b3ed12ed3ec2e4fcd2d4c4603ea99d9df
--- /dev/null
+++ b/Train_B_Book/train_ctx2_prob.bpo
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.poFile org.eventb.core.poStamp="0">
+    <org.eventb.core.poPredicateSet name="ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poIdentifier name="ROUTES" org.eventb.core.type="ℙ(ROUTES)"/>
+        <org.eventb.core.poIdentifier name="BLOCKS" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.poIdentifier name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.poIdentifier name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTET" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEU" org.eventb.core.predicate="dom(rtbl)=BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEV" org.eventb.core.predicate="ran(rtbl)=ROUTES" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEW" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEX" org.eventb.core.predicate="fst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEY" org.eventb.core.predicate="lst∈ROUTES → BLOCKS" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEZ" org.eventb.core.predicate="fst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poPredicate name="ROUTE[" org.eventb.core.predicate="lst∼⊆rtbl" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm8A"/>
+        <org.eventb.core.poPredicate name="ROUTE\" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm11A"/>
+        <org.eventb.core.poPredicate name="ROUTE]" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm10A"/>
+        <org.eventb.core.poPredicate name="ROUTE^" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm9A"/>
+        <org.eventb.core.poPredicate name="ROUTE_" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm12A"/>
+        <org.eventb.core.poPredicate name="ROUTE`" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}" org.eventb.core.source="/Train/train_ctx0.buc|org.eventb.core.contextFile#train_ctx0|org.eventb.core.axiom#internal_axm13A"/>
+        <org.eventb.core.poIdentifier name="S" org.eventb.core.type="ℙ(S)"/>
+        <org.eventb.core.poIdentifier name="SIG" org.eventb.core.type="ℙ(BLOCKS×S)"/>
+        <org.eventb.core.poPredicate name="ROUTEa" org.eventb.core.predicate="SIG∈ran(fst) ⤖ S" org.eventb.core.source="/Train/train_ctx1.buc|org.eventb.core.contextFile#train_ctx1|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poIdentifier name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.poIdentifier name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.poPredicate name="ROUTEb" org.eventb.core.predicate="blpt⊆BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm1A"/>
+        <org.eventb.core.poPredicate name="ROUTEc" org.eventb.core.predicate="lft∈blpt → BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm2A"/>
+        <org.eventb.core.poPredicate name="ROUTEd" org.eventb.core.predicate="rht∈blpt → BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm3A"/>
+        <org.eventb.core.poPredicate name="ROUTEe" org.eventb.core.predicate="lft∩rht=(∅ ⦂ ℙ(BLOCKS×BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm4A"/>
+        <org.eventb.core.poPredicate name="ROUTEf" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm5A"/>
+        <org.eventb.core.poPredicate name="ROUTEg" org.eventb.core.predicate="blpt∩ran(fst)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm6A"/>
+        <org.eventb.core.poPredicate name="ROUTEh" org.eventb.core.predicate="blpt∩ran(lst)=(∅ ⦂ ℙ(BLOCKS))" org.eventb.core.source="/Train/train_ctx2.buc|org.eventb.core.contextFile#train_ctx2|org.eventb.core.axiom#internal_axm7A"/>
+        <org.eventb.core.poIdentifier name="A" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="F" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.poIdentifier name="R1" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R2" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R3" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R4" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R5" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R6" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R7" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poIdentifier name="R8" org.eventb.core.type="ROUTES"/>
+        <org.eventb.core.poPredicate name="ROUTEi" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4thEYdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEj" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIIdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEk" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uIIYdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEl" org.eventb.core.predicate="nxt={R1 ↦ {A ↦ B,B ↦ C},R2 ↦ {A ↦ B,B ↦ D,D ↦ E,E ↦ F},R3 ↦ {H ↦ G,G ↦ E,E ↦ F},R4 ↦ {I ↦ G,G ↦ E,E ↦ F},R5 ↦ {C ↦ B,B ↦ A},R6 ↦ {F ↦ E,E ↦ D,D ↦ B,B ↦ A},R7 ↦ {F ↦ E,E ↦ G,G ↦ H},R8 ↦ {F ↦ E,E ↦ G,G ↦ I}}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMIdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEm" org.eventb.core.predicate="fst={R1 ↦ A,R2 ↦ A,R3 ↦ H,R4 ↦ I,R5 ↦ C,R6 ↦ F,R7 ↦ F,R8 ↦ F}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvMYdmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEn" org.eventb.core.predicate="lst={R1 ↦ C,R2 ↦ F,R3 ↦ F,R4 ↦ F,R5 ↦ A,R6 ↦ A,R7 ↦ H,R8 ↦ I}" org.eventb.core.source="/Train/train_ctx0_prob.buc|org.eventb.core.contextFile#train_ctx0_prob|org.eventb.core.axiom#_y4uvModmEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poIdentifier name="S1" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S2" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S3" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S4" org.eventb.core.type="S"/>
+        <org.eventb.core.poIdentifier name="S5" org.eventb.core.type="S"/>
+        <org.eventb.core.poPredicate name="ROUTEo" org.eventb.core.predicate="card(S)=5" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.axiom#_K6L9EIdnEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEp" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.axiom#_K6L9EYdnEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="ROUTEq" org.eventb.core.predicate="SIG={A ↦ S1,H ↦ S2,I ↦ S3,C ↦ S4,F ↦ S5}" org.eventb.core.source="/Train/train_ctx1_prob.buc|org.eventb.core.contextFile#train_ctx1_prob|org.eventb.core.axiom#_K6L9EodnEeOcUOZ5WAG6MA"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poSequent name="leuschel_axiom/WD" org.eventb.core.accurate="true" org.eventb.core.poDesc="Well-definedness of Axiom" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicateSet name="SEQHYP" org.eventb.core.parentSet="/Train/train_ctx2_prob.bpo|org.eventb.core.poFile#train_ctx2_prob|org.eventb.core.poPredicateSet#HYPtrain_ctx1_prod"/>
+        <org.eventb.core.poPredicate name="SEQHYQ" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·b∈blpt∧r∈ROUTES∧b ↦ r∈rtbl⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈dom(nxt(r))∧nxt(r)∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS∧(nxt(r)(b)∈{lft(b),rht(b)}∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈dom((nxt(r))∼)∧(nxt(r))∼∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS))" org.eventb.core.source="/Train/train_ctx2_prob.buc|org.eventb.core.contextFile#train_ctx2_prob|org.eventb.core.axiom#_aABTwIdnEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poSource name="SEQHYR" org.eventb.core.poRole="DEFAULT" org.eventb.core.source="/Train/train_ctx2_prob.buc|org.eventb.core.contextFile#train_ctx2_prob|org.eventb.core.axiom#_aABTwIdnEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poSelHint name="SEQHYS" org.eventb.core.poSelHintFst="/Train/train_ctx2_prob.bpo|org.eventb.core.poFile#train_ctx2_prob|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poSelHintSnd="/Train/train_ctx2_prob.bpo|org.eventb.core.poFile#train_ctx2_prob|org.eventb.core.poPredicateSet#HYPtrain_ctx1_prod"/>
+    </org.eventb.core.poSequent>
+    <org.eventb.core.poPredicateSet name="HYPtrain_ctx1_prod" org.eventb.core.parentSet="/Train/train_ctx2_prob.bpo|org.eventb.core.poFile#train_ctx2_prob|org.eventb.core.poPredicateSet#ABSHYP" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD0" org.eventb.core.predicate="blpt={B,E,G}" org.eventb.core.source="/Train/train_ctx2_prob.buc|org.eventb.core.contextFile#train_ctx2_prob|org.eventb.core.axiom#_aAAssIdnEeOcUOZ5WAG6MA"/>
+        <org.eventb.core.poPredicate name="PRD1" org.eventb.core.predicate="lft={B ↦ C,G ↦ I,E ↦ G}∧rht={B ↦ D,G ↦ H,E ↦ D}" org.eventb.core.source="/Train/train_ctx2_prob.buc|org.eventb.core.contextFile#train_ctx2_prob|org.eventb.core.axiom#_aAAssYdnEeOcUOZ5WAG6MA"/>
+    </org.eventb.core.poPredicateSet>
+    <org.eventb.core.poPredicateSet name="ALLHYP" org.eventb.core.parentSet="/Train/train_ctx2_prob.bpo|org.eventb.core.poFile#train_ctx2_prob|org.eventb.core.poPredicateSet#HYPtrain_ctx1_prod" org.eventb.core.poStamp="0">
+        <org.eventb.core.poPredicate name="PRD2" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·b∈blpt∧r∈ROUTES∧b ↦ r∈rtbl⇒nxt(r)(b)∈{lft(b),rht(b)}∨(nxt(r))∼(b)∈{lft(b),rht(b)}" org.eventb.core.source="/Train/train_ctx2_prob.buc|org.eventb.core.contextFile#train_ctx2_prob|org.eventb.core.axiom#_aABTwIdnEeOcUOZ5WAG6MA"/>
+    </org.eventb.core.poPredicateSet>
+</org.eventb.core.poFile>
diff --git a/Train_B_Book/train_ctx2_prob.bpr b/Train_B_Book/train_ctx2_prob.bpr
new file mode 100644
index 0000000000000000000000000000000000000000..b5d8fa28e3c1d420c92e154347e22cb39169603d
--- /dev/null
+++ b/Train_B_Book/train_ctx2_prob.bpr
@@ -0,0 +1,646 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.prFile version="1">
+    <org.eventb.core.prProof name="leuschel_axiom/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="b,r" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="BLOCKS,ROUTES">
+        <org.eventb.core.lang name="L"/>
+        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I}))" org.eventb.core.prHyps="">
+            <org.eventb.core.prAnte name="'">
+                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43"/>
+                <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43"/>
+                <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8}))" org.eventb.core.prHyps="">
+                    <org.eventb.core.prAnte name="'">
+                        <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p44" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73"/>
+                        <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73"/>
+                        <org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(S,{S1},{S2},{S3},{S4},{S5}))" org.eventb.core.prHyps="">
+                            <org.eventb.core.prAnte name="'">
+                                <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p74" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85"/>
+                                <org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85"/>
+                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
+                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p96">
+                                        <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p86" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p87"/>
+                                        <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p88" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p89"/>
+                                        <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p90" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p91"/>
+                                        <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p92" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p93"/>
+                                        <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p94,p95"/>
+                                        <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p96" org.eventb.core.prHyps="">
+                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p108">
+                                                <org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p97"/>
+                                                <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p98" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p99"/>
+                                                <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p100" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p101"/>
+                                                <org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p102"/>
+                                                <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p103" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p104"/>
+                                                <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p87" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p105"/>
+                                                <org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p89" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p106"/>
+                                                <org.eventb.core.prHypAction name="REWRITE7" org.eventb.core.prHidden="p91" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p107"/>
+                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p108" org.eventb.core.prHyps="">
+                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p115">
+                                                        <org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p99" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p109"/>
+                                                        <org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p101" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p110"/>
+                                                        <org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p104" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p111"/>
+                                                        <org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p105" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p112"/>
+                                                        <org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p106" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p113"/>
+                                                        <org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p107" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p114"/>
+                                                        <org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees b,r)" org.eventb.core.prGoal="p115" org.eventb.core.prHyps="">
+                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p116">
+                                                                <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+                                                                <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+                                                                <org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p116" org.eventb.core.prHyps="">
+                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p119" org.eventb.core.prHyps="p117,p118">
+                                                                        <org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p119" org.eventb.core.prHyps="">
+                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p120">
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with blpt={B,E,G}" org.eventb.core.prHyps="p5">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p117" org.eventb.core.prInfHyps="p121"/>
+                                                                                        <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p117"/>
+                                                                                        <org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p120" org.eventb.core.prHyps="p1">
+                                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p122">
+                                                                                                <org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p122" org.eventb.core.prHyps="">
+                                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p123">
+                                                                                                        <org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p123" org.eventb.core.prHyps=""/>
+                                                                                                    </org.eventb.core.prAnte>
+                                                                                                </org.eventb.core.prRule>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
+                                                                                            <org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p124">
+                                                                                <org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p124" org.eventb.core.prHyps="p1"/>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p125">
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with blpt={B,E,G}" org.eventb.core.prHyps="p5">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p117" org.eventb.core.prInfHyps="p121"/>
+                                                                                        <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p117"/>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p126">
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with blpt={B,E,G}" org.eventb.core.prHyps="p5">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p117" org.eventb.core.prInfHyps="p121"/>
+                                                                                        <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p117"/>
+                                                                                        <org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional image goal for nxt(r)" org.eventb.core.prGoal="p126" org.eventb.core.prHyps="p1">
+                                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p126" org.eventb.core.prHyps="p127">
+                                                                                                <org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p126" org.eventb.core.prHyps="p127"/>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p128">
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with blpt={B,E,G}" org.eventb.core.prHyps="p5">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p117" org.eventb.core.prInfHyps="p121"/>
+                                                                                        <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p117"/>
+                                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with lft={B ↦ C,G ↦ I,E ↦ G}" org.eventb.core.prGoal="p128" org.eventb.core.prHyps="p94">
+                                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p129">
+                                                                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p129" org.eventb.core.prHyps="">
+                                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p130"/>
+                                                                                                </org.eventb.core.prRule>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prAnte name="," org.eventb.core.prGoal="p131">
+                                                                                <org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p131" org.eventb.core.prHyps="p3"/>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prAnte name="-" org.eventb.core.prGoal="p132">
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with blpt={B,E,G}" org.eventb.core.prHyps="p5">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p117" org.eventb.core.prInfHyps="p121"/>
+                                                                                        <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p117"/>
+                                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with rht={B ↦ D,G ↦ H,E ↦ D}" org.eventb.core.prGoal="p132" org.eventb.core.prHyps="p95">
+                                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p133">
+                                                                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p133" org.eventb.core.prHyps="">
+                                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p130"/>
+                                                                                                </org.eventb.core.prRule>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prAnte name="." org.eventb.core.prGoal="p134">
+                                                                                <org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p134" org.eventb.core.prHyps="p2"/>
+                                                                            </org.eventb.core.prAnte>
+                                                                            <org.eventb.core.prAnte name="/" org.eventb.core.prGoal="p135">
+                                                                                <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with blpt={B,E,G}" org.eventb.core.prHyps="p5">
+                                                                                    <org.eventb.core.prAnte name="'">
+                                                                                        <org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p117" org.eventb.core.prInfHyps="p121"/>
+                                                                                        <org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p117"/>
+                                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with lft={B ↦ C,G ↦ I,E ↦ G}" org.eventb.core.prGoal="p135" org.eventb.core.prHyps="p94">
+                                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p136">
+                                                                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p136" org.eventb.core.prHyps="">
+                                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p137">
+                                                                                                        <org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with rht={B ↦ D,G ↦ H,E ↦ D}" org.eventb.core.prGoal="p137" org.eventb.core.prHyps="p95">
+                                                                                                            <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p138">
+                                                                                                                <org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p138" org.eventb.core.prHyps="">
+                                                                                                                    <org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p139"/>
+                                                                                                                </org.eventb.core.prRule>
+                                                                                                            </org.eventb.core.prAnte>
+                                                                                                        </org.eventb.core.prRule>
+                                                                                                    </org.eventb.core.prAnte>
+                                                                                                </org.eventb.core.prRule>
+                                                                                            </org.eventb.core.prAnte>
+                                                                                        </org.eventb.core.prRule>
+                                                                                    </org.eventb.core.prAnte>
+                                                                                </org.eventb.core.prRule>
+                                                                            </org.eventb.core.prAnte>
+                                                                        </org.eventb.core.prRule>
+                                                                    </org.eventb.core.prAnte>
+                                                                </org.eventb.core.prRule>
+                                                            </org.eventb.core.prAnte>
+                                                        </org.eventb.core.prRule>
+                                                    </org.eventb.core.prAnte>
+                                                </org.eventb.core.prRule>
+                                            </org.eventb.core.prAnte>
+                                        </org.eventb.core.prRule>
+                                    </org.eventb.core.prAnte>
+                                </org.eventb.core.prRule>
+                            </org.eventb.core.prAnte>
+                            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                        </org.eventb.core.prRule>
+                    </org.eventb.core.prAnte>
+                    <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+                </org.eventb.core.prRule>
+            </org.eventb.core.prAnte>
+            <org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
+        </org.eventb.core.prRule>
+        <org.eventb.core.prIdent name="B" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="C" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="D" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="E" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="G" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="H" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="I" org.eventb.core.type="BLOCKS"/>
+        <org.eventb.core.prIdent name="blpt" org.eventb.core.type="ℙ(BLOCKS)"/>
+        <org.eventb.core.prIdent name="lft" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="nxt" org.eventb.core.type="ℙ(ROUTES×ℙ(BLOCKS×BLOCKS))"/>
+        <org.eventb.core.prIdent name="rht" org.eventb.core.type="ℙ(BLOCKS×BLOCKS)"/>
+        <org.eventb.core.prIdent name="rtbl" org.eventb.core.type="ℙ(BLOCKS×ROUTES)"/>
+        <org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬B=C"/>
+        <org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬R4=R8">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬C=G"/>
+        <org.eventb.core.prPred name="p74" org.eventb.core.predicate="partition(S,{S1},{S2},{S3},{S4},{S5})">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p133" org.eventb.core.predicate="b∈dom({B ↦ D,G ↦ H,E ↦ D})">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p115" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·b∈blpt∧b ↦ r∈rtbl⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈dom(nxt(r))∧nxt(r)∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS∧(nxt(r)(b)∈{lft(b),rht(b)}∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈ran(nxt(r))∧(nxt(r))∼∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS))"/>
+        <org.eventb.core.prPred name="p119" org.eventb.core.predicate="r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈dom(nxt(r))∧nxt(r)∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS∧(nxt(r)(b)∈{lft(b),rht(b)}∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈ran(nxt(r))∧(nxt(r))∼∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS))">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬F=H">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬R3=R4">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p111" org.eventb.core.predicate="∀r⦂ROUTES·(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p118" org.eventb.core.predicate="b ↦ r∈rtbl">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬R1=R7">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬S1=S3">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬A=D">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬R5=R7">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬B=H"/>
+        <org.eventb.core.prPred name="p112" org.eventb.core.predicate="∀r⦂ROUTES·¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p127" org.eventb.core.predicate="nxt(r)∈BLOCKS ⤔ BLOCKS">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬E=I"/>
+        <org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬S1=S4">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬A=E">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p44" org.eventb.core.predicate="partition(ROUTES,{R1},{R2},{R3},{R4},{R5},{R6},{R7},{R8})">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p107" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬B=I"/>
+        <org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬R5=R6">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p122" org.eventb.core.predicate="r∈ROUTES">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p104" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p108" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·b∈blpt∧⊤∧b ↦ r∈rtbl⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈dom(nxt(r))∧nxt(r)∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS∧(nxt(r)(b)∈{lft(b),rht(b)}∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈ran(nxt(r))∧(nxt(r))∼∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS))"/>
+        <org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(lft∪rht)∩(nxt(r)∪(nxt(r))∼)∈blpt ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬R1=R6">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p97" org.eventb.core.predicate="rtbl∈BLOCKS ↔ ROUTES"/>
+        <org.eventb.core.prPred name="p139" org.eventb.core.predicate="nxt(r)(b)∈{{B ↦ C,G ↦ I,E ↦ G}(b),{B ↦ D,G ↦ H,E ↦ D}(b)}∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈ran(nxt(r))∧(nxt(r))∼∈BLOCKS ⇸ BLOCKS∧b∈{B,G,E}∧{B ↦ C,G ↦ I,E ↦ G}∈BLOCKS ⇸ BLOCKS∧{B ↦ D,G ↦ H,E ↦ D}∈BLOCKS ⇸ BLOCKS)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p113" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬S4=S5">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬D=F">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬R2=R5">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬R1=R8">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬R5=R8">
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬S1=S2">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p116" org.eventb.core.predicate="b∈blpt∧b ↦ r∈rtbl⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈dom(nxt(r))∧nxt(r)∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS∧(nxt(r)(b)∈{lft(b),rht(b)}∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈ran(nxt(r))∧(nxt(r))∼∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS))">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p7" org.eventb.core.predicate="BLOCKS={A,B,C,D,E,F,G,H,I}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬B=G"/>
+        <org.eventb.core.prPred name="p4" org.eventb.core.predicate="lft={B ↦ C,G ↦ I,E ↦ G}∧rht={B ↦ D,G ↦ H,E ↦ D}"/>
+        <org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬E=H"/>
+        <org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬A=C">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p3" org.eventb.core.predicate="lft∈blpt → BLOCKS"/>
+        <org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬R6=R7">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬R2=R7">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬A=H">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p132" org.eventb.core.predicate="b∈dom(rht)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p94" org.eventb.core.predicate="lft={B ↦ C,G ↦ I,E ↦ G}"/>
+        <org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬R1=R3">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬D=I"/>
+        <org.eventb.core.prPred name="p120" org.eventb.core.predicate="r∈dom(nxt)">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬R2=R6">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p123" org.eventb.core.predicate="⊤"/>
+        <org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬H=I"/>
+        <org.eventb.core.prPred name="p136" org.eventb.core.predicate="nxt(r)(b)∈{{B ↦ C,G ↦ I,E ↦ G}(b),rht(b)}∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈ran(nxt(r))∧(nxt(r))∼∈BLOCKS ⇸ BLOCKS∧b∈dom({B ↦ C,G ↦ I,E ↦ G})∧{B ↦ C,G ↦ I,E ↦ G}∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬A=I">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬D=E"/>
+        <org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬R1=R2">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·b∈blpt∧r∈ROUTES∧b ↦ r∈rtbl⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈dom(nxt(r))∧nxt(r)∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS∧(nxt(r)(b)∈{lft(b),rht(b)}∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈ran(nxt(r))∧(nxt(r))∼∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS))"/>
+        <org.eventb.core.prPred name="p125" org.eventb.core.predicate="b∈dom(nxt(r))">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p95" org.eventb.core.predicate="rht={B ↦ D,G ↦ H,E ↦ D}"/>
+        <org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬R3=R5">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬S3=S5">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬C=F">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p126" org.eventb.core.predicate="nxt(r)∈BLOCKS ⇸ BLOCKS">
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p110" org.eventb.core.predicate="∀r⦂ROUTES·nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬F=G">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬R2=R8">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p2" org.eventb.core.predicate="rht∈blpt → BLOCKS"/>
+        <org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬R6=R8">
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p137" org.eventb.core.predicate="nxt(r)(b)∈{{B ↦ C,G ↦ I,E ↦ G}(b),rht(b)}∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈ran(nxt(r))∧(nxt(r))∼∈BLOCKS ⇸ BLOCKS∧b∈{B,G,E}∧{B ↦ C,G ↦ I,E ↦ G}∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬A=G">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒fst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬D=H"/>
+        <org.eventb.core.prPred name="p5" org.eventb.core.predicate="blpt={B,E,G}"/>
+        <org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬R1=R4">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒fst(r)≠lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬C=D"/>
+        <org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬R3=R7">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬C=I"/>
+        <org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬R2=R3">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬S3=S4">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬R3=R6">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬G=I"/>
+        <org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p114" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·¬r=s⇒¬lst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p124" org.eventb.core.predicate="nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)"/>
+        <org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬C=E"/>
+        <org.eventb.core.prPred name="p130" org.eventb.core.predicate="b∈{B,G,E}">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬A=B">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p93" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p106" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·⊤∧⊤∧¬r=s⇒¬fst(r)∈rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬B=F">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬R4=R5">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p82" org.eventb.core.predicate="¬S2=S5">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀r⦂ROUTES·r∈ROUTES⇒(∀S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS)))"/>
+        <org.eventb.core.prPred name="p105" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒¬fst(r)=lst(r)">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬E=G"/>
+        <org.eventb.core.prPred name="p134" org.eventb.core.predicate="rht∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p1" org.eventb.core.predicate="nxt∈ROUTES → (BLOCKS ⤔ BLOCKS)"/>
+        <org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬R3=R8">
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p45" org.eventb.core.predicate="ROUTES={R1,R2,R3,R4,R5,R6,R7,R8}">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬D=G"/>
+        <org.eventb.core.prPred name="p102" org.eventb.core.predicate="blpt⊆BLOCKS"/>
+        <org.eventb.core.prPred name="p117" org.eventb.core.predicate="b∈blpt">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬G=H"/>
+        <org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬R2=R4">
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p109" org.eventb.core.predicate="∀r⦂ROUTES,S⦂ℙ(BLOCKS)·S⊆ran(nxt(r))∧S⊆(nxt(r))[S]⇒S=(∅ ⦂ ℙ(BLOCKS))"/>
+        <org.eventb.core.prPred name="p121" org.eventb.core.predicate="b∈{B,E,G}">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬S2=S3">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬B=D"/>
+        <org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬C=H"/>
+        <org.eventb.core.prPred name="p129" org.eventb.core.predicate="b∈dom({B ↦ C,G ↦ I,E ↦ G})">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬R4=R7">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p138" org.eventb.core.predicate="nxt(r)(b)∈{{B ↦ C,G ↦ I,E ↦ G}(b),{B ↦ D,G ↦ H,E ↦ D}(b)}∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈ran(nxt(r))∧(nxt(r))∼∈BLOCKS ⇸ BLOCKS∧b∈{B,G,E}∧{B ↦ C,G ↦ I,E ↦ G}∈BLOCKS ⇸ BLOCKS∧b∈dom({B ↦ D,G ↦ H,E ↦ D})∧{B ↦ D,G ↦ H,E ↦ D}∈BLOCKS ⇸ BLOCKS)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p128" org.eventb.core.predicate="b∈dom(lft)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬F=I">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀r⦂ROUTES·⊤⇒nxt(r)∈rtbl∼[{r}] ∖ {lst(r)} ⤖ rtbl∼[{r}] ∖ {fst(r)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬R7=R8">
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬B=E"/>
+        <org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬R4=R6">
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p92" org.eventb.core.predicate="rtbl={A ↦ R1,A ↦ R2,A ↦ R5,A ↦ R6,B ↦ R1,B ↦ R2,B ↦ R5,B ↦ R6,C ↦ R1,C ↦ R5,D ↦ R2,D ↦ R6,E ↦ R2,E ↦ R3,E ↦ R4,E ↦ R6,E ↦ R7,E ↦ R8,F ↦ R2,F ↦ R3,F ↦ R4,F ↦ R6,F ↦ R7,F ↦ R8,G ↦ R3,G ↦ R4,G ↦ R4,G ↦ R7,G ↦ R8,H ↦ R3,H ↦ R7,I ↦ R4,I ↦ R8}">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R2" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R3" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R4" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R6" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R7" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R8" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p131" org.eventb.core.predicate="lft∈BLOCKS ⇸ BLOCKS"/>
+        <org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬S2=S4">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p135" org.eventb.core.predicate="nxt(r)(b)∈{lft(b),rht(b)}∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈ran(nxt(r))∧(nxt(r))∼∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS)">
+            <org.eventb.core.prIdent name="b" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="r" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀r⦂ROUTES,s⦂ROUTES·r∈ROUTES∧s∈ROUTES∧r≠s⇒lst(r)∉rtbl∼[{s}] ∖ {fst(s),lst(s)}">
+            <org.eventb.core.prIdent name="fst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+            <org.eventb.core.prIdent name="lst" org.eventb.core.type="ℙ(ROUTES×BLOCKS)"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬E=F">
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬A=F">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p75" org.eventb.core.predicate="S={S1,S2,S3,S4,S5}">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S2" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S3" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S4" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬S1=S5">
+            <org.eventb.core.prIdent name="S" org.eventb.core.type="ℙ(S)"/>
+            <org.eventb.core.prIdent name="S1" org.eventb.core.type="S"/>
+            <org.eventb.core.prIdent name="S5" org.eventb.core.type="S"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀b⦂BLOCKS,r⦂ROUTES·b∈blpt∧r∈ROUTES∧b ↦ r∈rtbl⇒r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈dom(nxt(r))∧nxt(r)∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS∧(nxt(r)(b)∈{lft(b),rht(b)}∨(r∈dom(nxt)∧nxt∈ROUTES ⇸ ℙ(BLOCKS × BLOCKS)∧b∈dom((nxt(r))∼)∧(nxt(r))∼∈BLOCKS ⇸ BLOCKS∧b∈dom(lft)∧lft∈BLOCKS ⇸ BLOCKS∧b∈dom(rht)∧rht∈BLOCKS ⇸ BLOCKS))"/>
+        <org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(BLOCKS,{A},{B},{C},{D},{E},{F},{G},{H},{I})">
+            <org.eventb.core.prIdent name="A" org.eventb.core.type="BLOCKS"/>
+            <org.eventb.core.prIdent name="F" org.eventb.core.type="BLOCKS"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬R1=R5">
+            <org.eventb.core.prIdent name="R1" org.eventb.core.type="ROUTES"/>
+            <org.eventb.core.prIdent name="R5" org.eventb.core.type="ROUTES"/>
+        </org.eventb.core.prPred>
+        <org.eventb.core.prExpr name="e0" org.eventb.core.expression="ROUTES"/>
+        <org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
+        <org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
+        <org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
+        <org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
+        <org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
+        <org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
+        <org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
+        <org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
+        <org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
+        <org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
+        <org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.funImgGoal"/>
+    </org.eventb.core.prProof>
+</org.eventb.core.prFile>
diff --git a/Train_B_Book/train_ctx2_prob.bps b/Train_B_Book/train_ctx2_prob.bps
new file mode 100644
index 0000000000000000000000000000000000000000..30f5e51db3d47a728c71012ef536d3a19ee318fc
--- /dev/null
+++ b/Train_B_Book/train_ctx2_prob.bps
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.psFile>
+    <org.eventb.core.psStatus name="leuschel_axiom/WD" org.eventb.core.confidence="0" org.eventb.core.poStamp="0" org.eventb.core.psManual="false"/>
+</org.eventb.core.psFile>
diff --git a/Train_B_Book/train_ctx2_prob.buc b/Train_B_Book/train_ctx2_prob.buc
new file mode 100644
index 0000000000000000000000000000000000000000..f5be9f4254c8eeefbb24ad7bde7aeda8714242f2
--- /dev/null
+++ b/Train_B_Book/train_ctx2_prob.buc
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<org.eventb.core.contextFile org.eventb.core.configuration="org.eventb.core.fwd" org.eventb.texttools.text_lastmodified="1390836405572" org.eventb.texttools.text_representation="context train_ctx2_prob extends train_ctx2 train_ctx1_prob&#10;axioms&#10;   @prob_axm1 blpt = {B,E,G}&#10;   @prob_axm2 lft = {B↦C,   G↦I,   E↦G} ∧ rht = {B↦D,   G↦H, E↦D}&#10;   @leuschel_axiom ∀b,r·b∈blpt ∧ r∈ROUTES ∧ b↦r∈rtbl ⇒&#10;                      (nxt(r)(b) ∈ {lft(b),rht(b)} ∨&#10;                       nxt(r)∼(b) ∈ {lft(b),rht(b)}) // such an axiom is missing on page 547 of Abrial's book&#10;end&#10;" version="3">
+<org.eventb.core.extendsContext name="'" org.eventb.core.target="train_ctx2"/>
+<org.eventb.core.extendsContext name="_bpQicIdnEeOcUOZ5WAG6MA" org.eventb.core.target="train_ctx1_prob"/>
+<org.eventb.core.axiom name="_aAAssIdnEeOcUOZ5WAG6MA" org.eventb.core.label="prob_axm1" org.eventb.core.predicate="blpt = {B,E,G}"/>
+<org.eventb.core.axiom name="_aAAssYdnEeOcUOZ5WAG6MA" org.eventb.core.label="prob_axm2" org.eventb.core.predicate="lft = {B↦C,   G↦I,   E↦G} ∧ rht = {B↦D,   G↦H, E↦D}"/>
+<org.eventb.core.axiom name="_aABTwIdnEeOcUOZ5WAG6MA" org.eventb.core.comment="such an axiom is missing on page 547 of Abrial's book" org.eventb.core.label="leuschel_axiom" org.eventb.core.predicate="∀b,r·b∈blpt ∧ r∈ROUTES ∧ b↦r∈rtbl ⇒&#10;                      (nxt(r)(b) ∈ {lft(b),rht(b)} ∨&#10;                       nxt(r)∼(b) ∈ {lft(b),rht(b)})"/>
+</org.eventb.core.contextFile>