From b4a7067747c703eb174e7c0e51f8b574fbafe0eb Mon Sep 17 00:00:00 2001 From: gastentwickler <gastentwickler@malte-desktop> Date: Tue, 1 Feb 2022 12:45:22 +0100 Subject: [PATCH] Create VisB visualization for Train B Book (by Jonas Erdmann) --- Train_B_Book/.project | 17 + Train_B_Book/train.json | 128 + Train_B_Book/train.svg | 657 + Train_B_Book/train_0.bcm | 82 + Train_B_Book/train_0.bpo | 374 + Train_B_Book/train_0.bpr | 8946 ++++++++ Train_B_Book/train_0.bps | 38 + Train_B_Book/train_0.bum | 61 + Train_B_Book/train_0_prob.bcm | 115 + Train_B_Book/train_0_prob.bpo | 118 + Train_B_Book/train_0_prob.bpr | 2 + Train_B_Book/train_0_prob.bps | 2 + Train_B_Book/train_0_prob.bum | 25 + Train_B_Book/train_1.bcm | 130 + Train_B_Book/train_1.bpo | 718 + Train_B_Book/train_1.bpr | 21485 ++++++++++++++++++++ Train_B_Book/train_1.bps | 73 + Train_B_Book/train_1.bum | 91 + Train_B_Book/train_1_beebook.bcm | 162 + Train_B_Book/train_1_beebook.bpo | 168 + Train_B_Book/train_1_beebook.bpr | 2 + Train_B_Book/train_1_beebook.bps | 2 + Train_B_Book/train_1_beebook.bum | 37 + Train_B_Book/train_1_beebook.prob2project | 52 + Train_B_Book/train_1_prob.bcm | 155 + Train_B_Book/train_1_prob.bpo | 161 + Train_B_Book/train_1_prob.bpr | 2 + Train_B_Book/train_1_prob.bps | 2 + Train_B_Book/train_1_prob.bum | 37 + Train_B_Book/train_1_prob_POR.bcm | 162 + Train_B_Book/train_1_prob_POR.bpo | 168 + Train_B_Book/train_1_prob_POR.bpr | 2 + Train_B_Book/train_1_prob_POR.bps | 2 + Train_B_Book/train_1_prob_POR.bum | 44 + Train_B_Book/train_2.bcm | 135 + Train_B_Book/train_2.bpo | 313 + Train_B_Book/train_2.bpr | 14335 +++++++++++++ Train_B_Book/train_2.bps | 22 + Train_B_Book/train_2.bum | 57 + Train_B_Book/train_2_prob.bcm | 168 + Train_B_Book/train_2_prob.bpo | 174 + Train_B_Book/train_2_prob.bpr | 2 + Train_B_Book/train_2_prob.bps | 2 + Train_B_Book/train_2_prob.bum | 38 + Train_B_Book/train_3.bcm | 146 + Train_B_Book/train_3.bpo | 267 + Train_B_Book/train_3.bpr | 6327 ++++++ Train_B_Book/train_3.bps | 16 + Train_B_Book/train_3.bum | 62 + Train_B_Book/train_3_prob.bcm | 190 + Train_B_Book/train_3_prob.bpo | 189 + Train_B_Book/train_3_prob.bpr | 2 + Train_B_Book/train_3_prob.bps | 2 + Train_B_Book/train_3_prob.bum | 38 + Train_B_Book/train_4.bcm | 209 + Train_B_Book/train_4.bmso | 9934 +++++++++ Train_B_Book/train_4.bpo | 220 + Train_B_Book/train_4.bpr | 8472 ++++++++ Train_B_Book/train_4.bps | 5 + Train_B_Book/train_4.bum | 48 + Train_B_Book/train_4_POR.bcm | 216 + Train_B_Book/train_4_POR.bpo | 208 + Train_B_Book/train_4_POR.bpr | 2 + Train_B_Book/train_4_POR.bps | 2 + Train_B_Book/train_4_POR.bum | 45 + Train_B_Book/train_ctx0.bcc | 22 + Train_B_Book/train_ctx0.bpo | 66 + Train_B_Book/train_ctx0.bpr | 7539 +++++++ Train_B_Book/train_ctx0.bps | 8 + Train_B_Book/train_ctx0.buc | 22 + Train_B_Book/train_ctx0_beebook.bcc | 55 + Train_B_Book/train_ctx0_beebook.bpo | 64 + Train_B_Book/train_ctx0_beebook.bpr | 784 + Train_B_Book/train_ctx0_beebook.bps | 4 + Train_B_Book/train_ctx0_beebook.buc | 34 + Train_B_Book/train_ctx0_prob.bcc | 48 + Train_B_Book/train_ctx0_prob.bpo | 49 + Train_B_Book/train_ctx0_prob.bpr | 2 + Train_B_Book/train_ctx0_prob.bps | 2 + Train_B_Book/train_ctx0_prob.buc | 27 + Train_B_Book/train_ctx1.bcc | 28 + Train_B_Book/train_ctx1.bpo | 29 + Train_B_Book/train_ctx1.bpr | 1506 ++ Train_B_Book/train_ctx1.bps | 2 + Train_B_Book/train_ctx1.buc | 7 + Train_B_Book/train_ctx1_beebook.bcc | 73 + Train_B_Book/train_ctx1_beebook.bpo | 79 + Train_B_Book/train_ctx1_beebook.bpr | 1823 ++ Train_B_Book/train_ctx1_beebook.bps | 5 + Train_B_Book/train_ctx1_beebook.buc | 13 + Train_B_Book/train_ctx1_prob.bcc | 66 + Train_B_Book/train_ctx1_prob.bpo | 72 + Train_B_Book/train_ctx1_prob.bpr | 1165 ++ Train_B_Book/train_ctx1_prob.bps | 5 + Train_B_Book/train_ctx1_prob.buc | 13 + Train_B_Book/train_ctx2.bcc | 41 + Train_B_Book/train_ctx2.bpo | 47 + Train_B_Book/train_ctx2.bpr | 3924 ++++ Train_B_Book/train_ctx2.bps | 4 + Train_B_Book/train_ctx2.buc | 14 + Train_B_Book/train_ctx2_beebook.bcc | 91 + Train_B_Book/train_ctx2_beebook.bpo | 78 + Train_B_Book/train_ctx2_beebook.bpr | 2 + Train_B_Book/train_ctx2_beebook.bps | 2 + Train_B_Book/train_ctx2_beebook.buc | 6 + Train_B_Book/train_ctx2_prob.bcc | 86 + Train_B_Book/train_ctx2_prob.bpo | 81 + Train_B_Book/train_ctx2_prob.bpr | 646 + Train_B_Book/train_ctx2_prob.bps | 4 + Train_B_Book/train_ctx2_prob.buc | 8 + 110 files changed, 94712 insertions(+) create mode 100644 Train_B_Book/.project create mode 100644 Train_B_Book/train.json create mode 100644 Train_B_Book/train.svg create mode 100644 Train_B_Book/train_0.bcm create mode 100644 Train_B_Book/train_0.bpo create mode 100644 Train_B_Book/train_0.bpr create mode 100644 Train_B_Book/train_0.bps create mode 100644 Train_B_Book/train_0.bum create mode 100644 Train_B_Book/train_0_prob.bcm create mode 100644 Train_B_Book/train_0_prob.bpo create mode 100644 Train_B_Book/train_0_prob.bpr create mode 100644 Train_B_Book/train_0_prob.bps create mode 100644 Train_B_Book/train_0_prob.bum create mode 100644 Train_B_Book/train_1.bcm create mode 100644 Train_B_Book/train_1.bpo create mode 100644 Train_B_Book/train_1.bpr create mode 100644 Train_B_Book/train_1.bps create mode 100644 Train_B_Book/train_1.bum create mode 100644 Train_B_Book/train_1_beebook.bcm create mode 100644 Train_B_Book/train_1_beebook.bpo create mode 100644 Train_B_Book/train_1_beebook.bpr create mode 100644 Train_B_Book/train_1_beebook.bps create mode 100644 Train_B_Book/train_1_beebook.bum create mode 100644 Train_B_Book/train_1_beebook.prob2project create mode 100644 Train_B_Book/train_1_prob.bcm create mode 100644 Train_B_Book/train_1_prob.bpo create mode 100644 Train_B_Book/train_1_prob.bpr create mode 100644 Train_B_Book/train_1_prob.bps create mode 100644 Train_B_Book/train_1_prob.bum create mode 100644 Train_B_Book/train_1_prob_POR.bcm create mode 100644 Train_B_Book/train_1_prob_POR.bpo create mode 100644 Train_B_Book/train_1_prob_POR.bpr create mode 100644 Train_B_Book/train_1_prob_POR.bps create mode 100644 Train_B_Book/train_1_prob_POR.bum create mode 100644 Train_B_Book/train_2.bcm create mode 100644 Train_B_Book/train_2.bpo create mode 100644 Train_B_Book/train_2.bpr create mode 100644 Train_B_Book/train_2.bps create mode 100644 Train_B_Book/train_2.bum create mode 100644 Train_B_Book/train_2_prob.bcm create mode 100644 Train_B_Book/train_2_prob.bpo create mode 100644 Train_B_Book/train_2_prob.bpr create mode 100644 Train_B_Book/train_2_prob.bps create mode 100644 Train_B_Book/train_2_prob.bum create mode 100644 Train_B_Book/train_3.bcm create mode 100644 Train_B_Book/train_3.bpo create mode 100644 Train_B_Book/train_3.bpr create mode 100644 Train_B_Book/train_3.bps create mode 100644 Train_B_Book/train_3.bum create mode 100644 Train_B_Book/train_3_prob.bcm create mode 100644 Train_B_Book/train_3_prob.bpo create mode 100644 Train_B_Book/train_3_prob.bpr create mode 100644 Train_B_Book/train_3_prob.bps create mode 100644 Train_B_Book/train_3_prob.bum create mode 100644 Train_B_Book/train_4.bcm create mode 100644 Train_B_Book/train_4.bmso create mode 100644 Train_B_Book/train_4.bpo create mode 100644 Train_B_Book/train_4.bpr create mode 100644 Train_B_Book/train_4.bps create mode 100644 Train_B_Book/train_4.bum create mode 100644 Train_B_Book/train_4_POR.bcm create mode 100644 Train_B_Book/train_4_POR.bpo create mode 100644 Train_B_Book/train_4_POR.bpr create mode 100644 Train_B_Book/train_4_POR.bps create mode 100644 Train_B_Book/train_4_POR.bum create mode 100644 Train_B_Book/train_ctx0.bcc create mode 100644 Train_B_Book/train_ctx0.bpo create mode 100644 Train_B_Book/train_ctx0.bpr create mode 100644 Train_B_Book/train_ctx0.bps create mode 100644 Train_B_Book/train_ctx0.buc create mode 100644 Train_B_Book/train_ctx0_beebook.bcc create mode 100644 Train_B_Book/train_ctx0_beebook.bpo create mode 100644 Train_B_Book/train_ctx0_beebook.bpr create mode 100644 Train_B_Book/train_ctx0_beebook.bps create mode 100644 Train_B_Book/train_ctx0_beebook.buc create mode 100644 Train_B_Book/train_ctx0_prob.bcc create mode 100644 Train_B_Book/train_ctx0_prob.bpo create mode 100644 Train_B_Book/train_ctx0_prob.bpr create mode 100644 Train_B_Book/train_ctx0_prob.bps create mode 100644 Train_B_Book/train_ctx0_prob.buc create mode 100644 Train_B_Book/train_ctx1.bcc create mode 100644 Train_B_Book/train_ctx1.bpo create mode 100644 Train_B_Book/train_ctx1.bpr create mode 100644 Train_B_Book/train_ctx1.bps create mode 100644 Train_B_Book/train_ctx1.buc create mode 100644 Train_B_Book/train_ctx1_beebook.bcc create mode 100644 Train_B_Book/train_ctx1_beebook.bpo create mode 100644 Train_B_Book/train_ctx1_beebook.bpr create mode 100644 Train_B_Book/train_ctx1_beebook.bps create mode 100644 Train_B_Book/train_ctx1_beebook.buc create mode 100644 Train_B_Book/train_ctx1_prob.bcc create mode 100644 Train_B_Book/train_ctx1_prob.bpo create mode 100644 Train_B_Book/train_ctx1_prob.bpr create mode 100644 Train_B_Book/train_ctx1_prob.bps create mode 100644 Train_B_Book/train_ctx1_prob.buc create mode 100644 Train_B_Book/train_ctx2.bcc create mode 100644 Train_B_Book/train_ctx2.bpo create mode 100644 Train_B_Book/train_ctx2.bpr create mode 100644 Train_B_Book/train_ctx2.bps create mode 100644 Train_B_Book/train_ctx2.buc create mode 100644 Train_B_Book/train_ctx2_beebook.bcc create mode 100644 Train_B_Book/train_ctx2_beebook.bpo create mode 100644 Train_B_Book/train_ctx2_beebook.bpr create mode 100644 Train_B_Book/train_ctx2_beebook.bps create mode 100644 Train_B_Book/train_ctx2_beebook.buc create mode 100644 Train_B_Book/train_ctx2_prob.bcc create mode 100644 Train_B_Book/train_ctx2_prob.bpo create mode 100644 Train_B_Book/train_ctx2_prob.bpr create mode 100644 Train_B_Book/train_ctx2_prob.bps create mode 100644 Train_B_Book/train_ctx2_prob.buc diff --git a/Train_B_Book/.project b/Train_B_Book/.project new file mode 100644 index 0000000..2be4695 --- /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 0000000..7837fc7 --- /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 0000000..d8e0427 --- /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 0000000..ddecded --- /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>" 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 0000000..47b4ace --- /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>("/> + <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>("/> + </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>"/> + <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>"/> + <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>"/> + <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>" 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>(" 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_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>" 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 ↦ 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 0000000..41cc65f --- /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 0000000..733b1b4 --- /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 0000000..35d347b --- /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 // sees train_ctx0 variables resrt // set of reserved routes resbl // set of reserved blocks rsrtbl // reserved route of reserved block OCC // occupied block invariants @inv1 resrt ⊆ ROUTES // a reserved route is a route @inv2 resbl ⊆ BLOCKS // a reserved block is a block @inv3 rsrtbl ∈ resbl → resrt @inv5 rsrtbl ⊆ rtbl // the reserved route of a reserved block is a route of that block @inv4 OCC ⊆ resbl // occupied blocks are reserved @inv6 ∀r· r∈ROUTES ⇒ nxt(r)[rtbl∼[{r}]∖rsrtbl∼[{r}]] ∩ (rsrtbl∼[{r}]∖OCC) = ∅ @inv7 ∀r· r∈ROUTES ⇒ nxt(r)[rsrtbl∼[{r}]] ⊆ rsrtbl∼[{r}] @inv8 ∀r· r∈ROUTES ⇒ nxt(r)[rsrtbl∼[{r}]∖OCC] ⊆ rsrtbl∼[{r}]∖OCC events event INITIALISATION then @act1 resrt ≔ ∅ @act2 resbl ≔ ∅ @act3 rsrtbl ≔ ∅ @act4 OCC ≔ ∅ end event route_reservation any r where @grd1 r ∉ resrt // route not yet reserved @grd2 rtbl∼[{r}]∩resbl = ∅ // all blocks of route r are not yet reserved then @act1 resrt ≔ resrt∪{r} // reserve route @act2 rsrtbl ≔ rsrtbl ∪ (rtbl▷{r}) // add route of r to dynamic route table rsrtbl @act3 resbl ≔ resbl ∪ rtbl∼[{r}] // reserve all blocks of r end event route_freeing any r where @grd1 r ∈ resrt∖ran(rsrtbl) // r is reserved but has no more reserved blocks then @act1 resrt ≔ resrt∖{r} end event FRONT_MOVE_1 // the train enters its route any r where @grd1 r ∈ resrt @grd2 fst(r) ∈ resbl∖OCC // first block not occupied @grd3 rsrtbl(fst(r)) = r // first block still reserved then @act1 OCC ≔ OCC ∪ {fst(r)} end event FRONT_MOVE_2 // the front of the train enters the next block on the route any b c where @grd1 b∈OCC @grd2 c∉OCC @grd3 b↦c ∈ nxt(rsrtbl(b)) then @act1 OCC ≔ OCC∪{c} end event BACK_MOVE // the back of train leaves block b and enters block n(b) or leaves any b n where @grd1 b∈OCC @grd2 n = nxt(rsrtbl(b)) // n is the next relation for the route of b @grd3 b∈dom(n) ⇒ n(b)∈OCC @grd4 b∈ran(n) ∧ n∼(b)∈dom(rsrtbl) ⇒ rsrtbl(n∼(b))≠rsrtbl(b) // any previous block must be reserved by another route then @act1 OCC ≔ OCC∖{b} @act2 rsrtbl ≔ {b}⩤rsrtbl @act3 resbl ≔ resbl∖{b} end end " 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) ∧ n∼(b)∈dom(rsrtbl) ⇒ 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 0000000..b94694b --- /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>" 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 0000000..06e385a --- /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 0000000..d13ec2a --- /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 0000000..ced513e --- /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 0000000..a2be207 --- /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 variables resrt // set of reserved routes resbl // set of reserved blocks rsrtbl // reserved route of reserved block OCC // occupied block events event INITIALISATION extends INITIALISATION end event route_reservation extends route_reservation end event route_freeing extends route_freeing end event FRONT_MOVE_1 // the train enters its route extends FRONT_MOVE_1 end event FRONT_MOVE_2 // the front of the train enters the next block on the route extends FRONT_MOVE_2 end event BACK_MOVE // the back of train leaves block b and enters block n(b) or leaves extends BACK_MOVE end end " 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 0000000..45f927b --- /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>" 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>" 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 0000000..5b79c22 --- /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>"/> + <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>"/> + </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>|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>|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>" 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>" 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 0000000..26ecb31 --- /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 0000000..dc19b91 --- /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 0000000..52c9015 --- /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 // refines train_0 sees train_ctx0 variables resrt // set of reserved routes resbl // set of reserved blocks rsrtbl // reserved route of reserved block OCC // occupied block TRK // physical track frm // set of formed routes LBT // last block of the train invariants @inv1 TRK ∈ BLOCKS ⤔ BLOCKS // TRK is a partial injection between blocks @inv2 frm ⊆ resrt // formed routes are reserved routes FUN-7 @inv3 rsrtbl[OCC] ⊆ frm // reserved routes of occupied block are formed routes @inv4 ∀r· r∈resrt∖frm ⇒ rtbl▷{r} = rsrtbl▷{r} // for routes which are reserved but not yet formed: we resrve the full route @inv5 ∀x,y· x↦y∈TRK ⇒ (∃r·r∈ROUTES ∧ x↦y∈nxt(r)) @inv6 ∀r· r∈frm ⇒ rsrtbl∼[{r}]◁nxt(r) = rsrtbl∼[{r}]◁TRK // for each formed route the route corresponds to the physical track @inv7 LBT ⊆ OCC // the last blocks of the trains are all occupied @inv8 ∀a,b· b∈LBT ∧ b∈ran(nxt(rsrtbl(b))) ∧ a=(nxt(rsrtbl(b)))∼(b) ∧ a∈dom(rsrtbl) ⇒ rsrtbl(a)≠rsrtbl(b) // all predecessors of last blocks are not reserved or reserved for another route theorem @thm1 ∀b·b∈OCC ∧ b∈dom(TRK) ⇒ (nxt(rsrtbl(b)))(b)=TRK(b) theorem @thm2 ran(lst)∩(dom(TRK)∖ran(fst))=∅ theorem @thm3 ran(fst)∩(ran(TRK)∖ran(lst))=∅ events event INITIALISATION then @act1 resrt ≔ ∅ @act2 resbl ≔ ∅ @act3 rsrtbl ≔ ∅ @act4 OCC ≔ ∅ @act5 TRK ≔ ∅ @act6 frm ≔ ∅ @act7 LBT ≔ ∅ end event route_reservation extends route_reservation end event route_freeing extends route_freeing begin @act2 frm ≔ frm∖{r} end event FRONT_MOVE_1 // the train enters its route refines FRONT_MOVE_1 any r where @grd1 r ∈ frm @grd2 fst(r) ∈ resbl∖OCC @grd3 rsrtbl(fst(r)) = r then @act1 OCC ≔ OCC ∪ {fst(r)} @act2 LBT ≔ LBT ∪ {fst(r)} end event FRONT_MOVE_2 // the front of the train moves refines FRONT_MOVE_2 any b where @grd1 b∈OCC @grd2 b∈dom(TRK) @grd3 TRK(b) ∉ OCC with @c c=TRK(b) then @act1 OCC ≔ OCC∪{TRK(b)} end event BACK_MOVE_1 // the train leaves its route refines BACK_MOVE any b where @grd1 b∈LBT @grd2 b ∉ dom(TRK) with @n n=nxt(rsrtbl(b)) then @act1 OCC ≔ OCC∖{b} @act2 rsrtbl ≔ {b}⩤rsrtbl @act3 resbl ≔ resbl∖{b} @act4 LBT ≔ LBT∖{b} end event BACK_MOVE_2 // the back of the train moves refines BACK_MOVE any b where @grd1 b∈LBT @grd2 b∈dom(TRK) @grd3 TRK(b)∈OCC with @n n=nxt(rsrtbl(b)) then @act1 OCC ≔ OCC∖{b} @act2 rsrtbl ≔ {b}⩤rsrtbl @act3 resbl ≔ resbl∖{b} @act4 LBT ≔ (LBT∖{b})∪{TRK(b)} end event point_positionning any r where @grd1 r∈resrt∖frm then @act1 TRK ≔ ((dom(nxt(r))⩤TRK)⩥ran(nxt(r))) ∪ nxt(r) end event route_formation any r where @grd1 r∈resrt∖frm @grd2 rsrtbl∼[{r}]◁nxt(r) = rsrtbl∼[{r}]◁TRK then @act1 frm≔frm∪{r} end end " 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))) ∧ a=(nxt(rsrtbl(b)))∼(b) ∧ 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 0000000..3f07b8c --- /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>" 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 0000000..f563a26 --- /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 0000000..d13ec2a --- /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 0000000..ced513e --- /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 0000000..d172ec5 --- /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 variables resrt // set of reserved routes resbl // set of reserved blocks rsrtbl // reserved route of reserved block OCC // occupied block TRK // physical track frm // set of formed routes LBT // last block of the train events event INITIALISATION extends INITIALISATION end event route_reservation extends route_reservation end event route_freeing extends route_freeing end event FRONT_MOVE_1 // the train enters its route extends FRONT_MOVE_1 end event FRONT_MOVE_2 // the front of the train moves extends FRONT_MOVE_2 end event BACK_MOVE_1 // the train leaves its route extends BACK_MOVE_1 end event BACK_MOVE_2 // the back of the train moves extends BACK_MOVE_2 end event point_positionning extends point_positionning end event route_formation extends route_formation end end " 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 0000000..0db121d --- /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 0000000..b8d0171 --- /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>" 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 0000000..21b4783 --- /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 0000000..d13ec2a --- /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 0000000..ced513e --- /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 0000000..82d7bc4 --- /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 variables resrt // set of reserved routes resbl // set of reserved blocks rsrtbl // reserved route of reserved block OCC // occupied block TRK // physical track frm // set of formed routes LBT // last block of the train events event INITIALISATION extends INITIALISATION end event route_reservation extends route_reservation end event route_freeing extends route_freeing end event FRONT_MOVE_1 // the train enters its route extends FRONT_MOVE_1 end event FRONT_MOVE_2 // the front of the train moves extends FRONT_MOVE_2 end event BACK_MOVE_1 // the train leaves its route extends BACK_MOVE_1 end event BACK_MOVE_2 // the back of the train moves extends BACK_MOVE_2 end event point_positionning extends point_positionning end event route_formation extends route_formation end end " 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 0000000..c058771 --- /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>" 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 0000000..49ff07c --- /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 0000000..d13ec2a --- /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 0000000..ced513e --- /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 0000000..3928b5d --- /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 variables resrt // set of reserved routes resbl // set of reserved blocks rsrtbl // reserved route of reserved block OCC // occupied block TRK // physical track frm // set of formed routes LBT // last block of the train events event INITIALISATION extends INITIALISATION end event route_reservation extends route_reservation when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅ end event route_freeing extends route_freeing end event FRONT_MOVE_1 // the train enters its route extends FRONT_MOVE_1 when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅ end event FRONT_MOVE_2 // the front of the train moves extends FRONT_MOVE_2 when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅ end event BACK_MOVE_1 // the train leaves its route extends BACK_MOVE_1 when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅ end event BACK_MOVE_2 // the back of the train moves extends BACK_MOVE_2 when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅ end event point_positionning extends point_positionning when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅ end event route_formation extends route_formation when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅ end end " 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 0000000..4a46607 --- /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>" 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 0000000..fce6f2e --- /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 0000000..eab7623 --- /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 0000000..abf22ef --- /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 0000000..c6ba300 --- /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 // refines train_1 sees train_ctx0 variables resrt // set of reserved routes resbl // set of reserved blocks rsrtbl // reserved route of reserved block OCC // occupied block TRK // physical track frm // set of formed routes LBT // last block of the train rdy // ready routes: ready for accepting a train invariants @inv4 rdy ⊆ frm @inv2 ∀r·r∈rdy ⇒ rtbl▷{r}= rsrtbl▷{r} // all blocks reserved for a ready route @inv3 ∀r·r∈rdy ⇒ dom(rtbl▷{r})∩OCC=∅ // no block of a ready route is occupied events event INITIALISATION then @act1 resrt ≔ ∅ @act2 resbl ≔ ∅ @act3 rsrtbl ≔ ∅ @act4 OCC ≔ ∅ @act5 TRK ≔ ∅ @act6 frm ≔ ∅ @act7 LBT ≔ ∅ @act8 rdy ≔ ∅ end event route_reservation extends route_reservation end event route_freeing extends route_freeing end event FRONT_MOVE_1 // the train enters its route refines FRONT_MOVE_1 any r where @grd1 r ∈ rdy // was r:frm in train_1 @grd2 rsrtbl(fst(r)) = r then @act1 OCC ≔ OCC ∪ {fst(r)} @act2 LBT ≔ LBT ∪ {fst(r)} @act3 rdy ≔ rdy ∖ {r} end event FRONT_MOVE_2 // the front of the train moves extends FRONT_MOVE_2 end event BACK_MOVE_1 // the train leaves its route extends BACK_MOVE_1 end event BACK_MOVE_2 // the back of the train moves extends BACK_MOVE_2 end event point_positionning extends point_positionning end event route_formation extends route_formation begin @act3 rdy≔rdy∪{r} end end " 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 0000000..78ab953 --- /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>" 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>"> + <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>|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 0000000..ae1289f --- /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 0000000..d13ec2a --- /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 0000000..ced513e --- /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 0000000..a2f289c --- /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 variables resrt // set of reserved routes resbl // set of reserved blocks rsrtbl // reserved route of reserved block OCC // occupied block TRK // physical track frm // set of formed routes LBT // last block of the train rdy // ready routes: ready for accepting a train events event INITIALISATION extends INITIALISATION end event route_reservation extends route_reservation end event route_freeing extends route_freeing end event FRONT_MOVE_1 // the train enters its route extends FRONT_MOVE_1 end event FRONT_MOVE_2 // the front of the train moves extends FRONT_MOVE_2 end event BACK_MOVE_1 // the train leaves its route extends BACK_MOVE_1 end event BACK_MOVE_2 // the back of the train moves extends BACK_MOVE_2 end event point_positionning extends point_positionning end event route_formation extends route_formation end end " 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>" 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 0000000..5815f71 --- /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>" 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 0000000..aa53f5a --- /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 0000000..efcfb83 --- /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 0000000..9887e32 --- /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 0000000..aab35a6 --- /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 // refines train_2 sees train_ctx1 variables resrt // set of reserved routes resbl // set of reserved blocks rsrtbl // reserved route of reserved block OCC // occupied block TRK // physical track frm // set of formed routes LBT // last block of the train GRN // set of green signals invariants @inv1 GRN ⊆ S @inv2 SIG[fst[rdy]] = GRN theorem @thm1 rdy◁fst ∈ rdy ↣ BLOCKS events event INITIALISATION then @act1 resrt ≔ ∅ @act2 resbl ≔ ∅ @act3 rsrtbl ≔ ∅ @act4 OCC ≔ ∅ @act5 TRK ≔ ∅ @act6 frm ≔ ∅ @act7 LBT ≔ ∅ @act8 GRN ≔ ∅ end event route_reservation extends route_reservation end event route_freeing extends route_freeing end event FRONT_MOVE_1 // the train enters its route refines FRONT_MOVE_1 any b where @grd1 b ∈ dom(SIG) // was r:rdy @grd2 SIG(b)∈GRN with @r r∈rdy ∧ fst(r)=b then @act1 OCC ≔ OCC ∪ {b} @act2 LBT ≔ LBT ∪ {b} @act3 GRN ≔ GRN ∖ {SIG(b)} end event FRONT_MOVE_2 // the front of the train moves extends FRONT_MOVE_2 end event BACK_MOVE_1 // the train leaves its route extends BACK_MOVE_1 end event BACK_MOVE_2 // the back of the train moves extends BACK_MOVE_2 end event point_positionning extends point_positionning end event route_formation refines route_formation any r where @grd1 r∈resrt∖frm @grd2 rsrtbl∼[{r}]◁nxt(r) = rsrtbl∼[{r}]◁TRK then @act1 frm≔frm∪{r} @act2 GRN≔GRN∪{SIG(fst(r))} end end " 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 0000000..ccb510a --- /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>" 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 0000000..c8a6489 --- /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 0000000..d13ec2a --- /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 0000000..ced513e --- /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 0000000..e8a52fd --- /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 variables resrt // set of reserved routes resbl // set of reserved blocks rsrtbl // reserved route of reserved block OCC // occupied block TRK // physical track frm // set of formed routes LBT // last block of the train GRN // set of green signals events event INITIALISATION extends INITIALISATION end event route_reservation extends route_reservation end event route_freeing extends route_freeing end event FRONT_MOVE_1 // the train enters its route extends FRONT_MOVE_1 end event FRONT_MOVE_2 // the front of the train moves extends FRONT_MOVE_2 end event BACK_MOVE_1 // the train leaves its route extends BACK_MOVE_1 end event BACK_MOVE_2 // the back of the train moves extends BACK_MOVE_2 end event point_positionning extends point_positionning end event route_formation extends route_formation end end " 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 0000000..90be4b3 --- /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>" 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 0000000..59f28db --- /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 & ((B|->C) : TRK or (C|->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 & ((B|->C) : TRK or (C|->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 & ((B|->D) : TRK or (D|->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 & ((B|->C) : TRK or (C|->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 & ((B|->D) : TRK or (D|->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 & ((B|->D) : TRK or (D|->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 & ((B|->C) : TRK or (C|->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 & ((B|->D) : TRK or (D|->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 & ((E|->D) : TRK or (D|->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 & ((E|->D) : TRK or (D|->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 & ((E|->G) : TRK or (G|->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 & ((E|->D) : TRK or (D|->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 & ((E|->G) : TRK or (G|->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 & ((E|->G) : TRK or (G|->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 & ((E|->D) : TRK or (D|->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 & ((E|->G) : TRK or (G|->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 & ((G|->I) : TRK or (I|->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 & ((G|->I) : TRK or (I|->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 & ((G|->H) : TRK or (H|->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 & ((G|->I) : TRK or (I|->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 & ((G|->H) : TRK or (H|->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 & ((G|->H) : TRK or (H|->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 & ((G|->I) : TRK or (I|->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 & ((G|->H) : TRK or (H|->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 0000000..a66681d --- /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 0000000..68512db --- /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 0000000..384c2af --- /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 0000000..03050b1 --- /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 // refines train_3 sees train_ctx2_prob variables resrt // set of reserved routes resbl // set of reserved blocks rsrtbl // reserved route of reserved block OCC // occupied block TRK // physical track frm // set of formed routes LBT // last block of the train GRN // set of green signals invariants @inv1 (lft ∪ rht) ∩ (TRK ∪ TRK∼) ∈ blpt⇸BLOCKS events event INITIALISATION then @act1 resrt ≔ ∅ @act2 resbl ≔ ∅ @act3 rsrtbl ≔ ∅ @act4 OCC ≔ ∅ @act5 TRK ≔ ∅ @act6 frm ≔ ∅ @act7 LBT ≔ ∅ @act8 GRN ≔ ∅ end event route_reservation extends route_reservation end event route_freeing extends route_freeing end event FRONT_MOVE_1 // the train enters its route extends FRONT_MOVE_1 end event FRONT_MOVE_2 // the front of the train moves extends FRONT_MOVE_2 end event BACK_MOVE_1 // the train leaves its route extends BACK_MOVE_1 end event BACK_MOVE_2 // the back of the train moves extends BACK_MOVE_2 end event point_positionning extends point_positionning end event route_formation extends route_formation end end " 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 0000000..2f9a221 --- /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>" 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 0000000..5624ccf --- /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 0000000..d13ec2a --- /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 0000000..ced513e --- /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 0000000..2c2ab4b --- /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 variables resrt // set of reserved routes resbl // set of reserved blocks rsrtbl // reserved route of reserved block OCC // occupied block TRK // physical track frm // set of formed routes LBT // last block of the train GRN // set of green signals events event INITIALISATION extends INITIALISATION end event route_reservation extends route_reservation when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅ end event route_freeing extends route_freeing end event FRONT_MOVE_1 // the train enters its route extends FRONT_MOVE_1 when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅ end event FRONT_MOVE_2 // the front of the train moves extends FRONT_MOVE_2 when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅ end event BACK_MOVE_1 // the train leaves its route extends BACK_MOVE_1 when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅ end event BACK_MOVE_2 // the back of the train moves extends BACK_MOVE_2 when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅ end event point_positionning extends point_positionning when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅ end event route_formation extends route_formation when @POR_route_freeing_impossible resrt∖ran(rsrtbl) = ∅ end end " 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 0000000..77556cc --- /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 0000000..980dfee --- /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 0000000..2f9d5c3 --- /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 0000000..2c5942a --- /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 0000000..bfed854 --- /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 sets BLOCKS ROUTES constants rtbl nxt fst lst axioms @axm1 rtbl ∈ BLOCKS ↔ ROUTES @axm2 dom(rtbl) = BLOCKS @axm3 ran(rtbl) = ROUTES @axm4 nxt ∈ ROUTES → (BLOCKS ⤔ BLOCKS) @axm5 fst ∈ ROUTES → BLOCKS @axm6 lst ∈ ROUTES → BLOCKS @axm7 fst∼ ⊆ rtbl // each first block is part of the corresponding route @axm8 lst∼ ⊆ rtbl // each last block is part of the corresponding route @axm11 ∀r·r∈ROUTES ⇒ fst(r)≠lst(r) // first and last block of a route are distinct @axm10 ∀r·r∈ROUTES ⇒ (∀S·S⊆ran(r) ∧ S⊆nxt(r)[S] ⇒ S=∅) // ENV-11 : no cycles; replaced BLOCKS by ran(r) for ProB @axm9 ∀r·r∈ROUTES ⇒ nxt(r) ∈ rtbl∼[{r}]∖{lst(r)} ⤖ rtbl∼[{r}]∖{fst(r)} // ENV-10: continuous path from first to last @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 @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 end " 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 0000000..27d36e7 --- /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 0000000..c546e89 --- /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 0000000..eaed4f7 --- /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 0000000..3fbf1d1 --- /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 0000000..ea27cdd --- /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 extends train_ctx0 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 axioms @axm44 partition(BLOCKS, {A}, {B}, {C}, {D}, {E}, {F}, {G}, {H}, {I},{J}, {K},{L},{M},{N}) @axm45 partition(ROUTES, {R1}, {R2}, {R3},{R4},{R5},{R6},{R7},{R8},{R9},{R10}) @compute_rtbl_from_nxt rtbl = {b↦r∣ r∈dom(nxt) ∧ (b∈dom(nxt(r)) ∨ b∈ran(nxt(r)))} @axm40 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})} @axm41 fst = {(R1 ↦ L),(R2 ↦ L),(R3 ↦ L), (R4 ↦ M),(R5 ↦ M), (R6 ↦ C), (R7 ↦ G),(R8 ↦ N), (R9 ↦ G),(R10 ↦ N)} @axm42 lst = {(R1 ↦ C),(R2 ↦ G),(R3 ↦ N), (R4 ↦ G),(R5 ↦ N),(R6 ↦ L), (R7 ↦ L),(R8 ↦ L), (R9 ↦ M),(R10 ↦ M)} end " 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}), (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.axiom name="_uj5LBIdoEeOcUOZ5WAG6MA" 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.axiom name="_uj5yEIdoEeOcUOZ5WAG6MA" 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.contextFile> diff --git a/Train_B_Book/train_ctx0_prob.bcc b/Train_B_Book/train_ctx0_prob.bcc new file mode 100644 index 0000000..2d8f92e --- /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 0000000..88b95cd --- /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 0000000..d13ec2a --- /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 0000000..ced513e --- /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 0000000..3c1f3eb --- /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 extends train_ctx0 constants A B C D E F G H I R1 R2 R3 R4 R5 R6 R7 R8 axioms @axm44 partition(BLOCKS, {A}, {B}, {C}, {D}, {E}, {F}, {G}, {H}, {I}) @axm45 partition(ROUTES, {R1}, {R2}, {R3},{R4},{R5},{R6},{R7},{R8}) @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)} @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})} @axm41 fst = {(R1 ↦ A),(R2 ↦ A),(R3 ↦ H),(R4 ↦ I),(R5 ↦ C),(R6 ↦ F),(R7 ↦ F),(R8 ↦ F)} @axm42 lst = {(R1 ↦ C),(R2 ↦ F),(R3 ↦ F),(R4 ↦ F),(R5 ↦ A),(R6 ↦ A),(R7 ↦ H),(R8 ↦ I)} end " 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 0000000..a05c493 --- /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 0000000..ae3396a --- /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 0000000..d623e24 --- /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 0000000..ced513e --- /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 0000000..42a870d --- /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 sets S constants SIG axioms @axm1 SIG ∈ ran(fst) ⤖ S end " 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 0000000..0759af1 --- /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 0000000..4c70a60 --- /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 0000000..5395c33 --- /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 0000000..f09c916 --- /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 0000000..0d21a04 --- /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 constants S1 S2 S3 S4 S5 axioms theorem @axm2 card(S)=5 @axm3 partition(S, {S1}, {S2}, {S3}, {S4}, {S5}) @axm4 SIG = {(L↦S1),(M↦S2),(N↦S3),(C↦S4),(G↦S5)} end " 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 0000000..df35a1e --- /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 0000000..d431696 --- /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 0000000..43af4c6 --- /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 0000000..f09c916 --- /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 0000000..0f412c0 --- /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 constants S1 S2 S3 S4 S5 axioms theorem @axm2 card(S)=5 @axm3 partition(S, {S1}, {S2}, {S3}, {S4}, {S5}) @axm4 SIG = {(A↦S1),(H↦S2),(I↦S3),(C↦S4),(F↦S5)} end " 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 0000000..3c5ea49 --- /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 0000000..6325c02 --- /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 0000000..7ceed9d --- /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 0000000..6890ceb --- /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 0000000..0a35af0 --- /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 constants blpt lft rht axioms @axm1 blpt ⊆ BLOCKS // blocks with points: sets of blocks containing points @axm2 lft ∈ blpt → BLOCKS @axm3 rht ∈ blpt → BLOCKS @axm4 lft ∩ rht = ∅ @axm5 ∀r·r∈ROUTES ⇒ (lft ∪ rht) ∩ (nxt(r) ∪ (nxt(r))∼) ∈ blpt⇸BLOCKS @axm6 blpt ∩ ran(fst) = ∅ @axm7 blpt ∩ ran(lst) = ∅ end " 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 0000000..afe740f --- /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 0000000..4353435 --- /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 0000000..d13ec2a --- /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 0000000..ced513e --- /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 0000000..1e450d8 --- /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 axioms @prob_axm1 blpt = {B,D,F,I,J} end " 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 0000000..077378c --- /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 0000000..d4aed49 --- /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 0000000..b5d8fa2 --- /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 0000000..30f5e51 --- /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 0000000..f5be9f4 --- /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 axioms @prob_axm1 blpt = {B,E,G} @prob_axm2 lft = {B↦C, G↦I, E↦G} ∧ rht = {B↦D, G↦H, E↦D} @leuschel_axiom ∀b,r·b∈blpt ∧ r∈ROUTES ∧ b↦r∈rtbl ⇒ (nxt(r)(b) ∈ {lft(b),rht(b)} ∨ nxt(r)∼(b) ∈ {lft(b),rht(b)}) // such an axiom is missing on page 547 of Abrial's book end " 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 ⇒ (nxt(r)(b) ∈ {lft(b),rht(b)} ∨ nxt(r)∼(b) ∈ {lft(b),rht(b)})"/> +</org.eventb.core.contextFile> -- GitLab