-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathm1_shafts.bum
35 lines (35 loc) · 6.44 KB
/
m1_shafts.bum
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<org.eventb.core.machineFile org.eventb.core.configuration="org.eventb.core.fwd" org.eventb.core.generated="false" org.eventb.texttools.text_lastmodified="1590749135266" org.eventb.texttools.text_representation="machine m1_shafts refines m0_cabins sees m1_shafts_context variables floor shaft invariants @shaft_type shaft ∈ CABINS → SHAFTS events event INITIALISATION extends INITIALISATION then @shafts_init shaft ≔ CABINS × {UP} end event CabinMovesDown extends CabinMovesDown where @lower_floor_free ∀c·c ∈ dom(floor) ∧ shaft(c) = DOWN ⇒ (floor(cabin) − 1) ≠ floor(c) //SAF 8 @shaft_down shaft(cabin) = DOWN end event CabinMovesUp extends CabinMovesUp where @upper_floor_free ∀c·c ∈ dom(floor) ∧ shaft(c) = UP ⇒ (floor(cabin) + 1) ≠ floor(c) //SAF 8 @shaft_up shaft(cabin) = UP end event CabinUpToDown any cabin where @at_top_floor floor(cabin) = TOP_FLOOR //REQ 4 @in_up_shaft shaft(cabin) = UP @top_right_free ∀c·c ∈ dom(shaft) ∧ shaft(c) = DOWN ⇒ floor(c) ≠ TOP_FLOOR //SAF 8 then @up_to_down shaft(cabin) ≔ DOWN end event CabinDownToUp any cabin where @at_ground_floor floor(cabin) = 0 //REQ 5 @in_down_shaft shaft(cabin) = DOWN @ground_left_free ∀c·c ∈ dom(shaft) ∧ shaft(c) = UP ⇒ floor(c) ≠ 0 //SAF 8 then @down_to_up shaft(cabin) ≔ UP end end " version="5">
<org.eventb.core.refinesMachine name="_oggNMJ94Eeq6js3PozKjqQ" org.eventb.core.target="m0_cabins"/>
<org.eventb.core.seesContext name="_oggNMZ94Eeq6js3PozKjqQ" org.eventb.core.target="m1_shafts_context"/>
<org.eventb.core.event name="'" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="INITIALISATION">
<org.eventb.core.action name="_oghbUJ94Eeq6js3PozKjqQ" org.eventb.core.assignment="shaft ≔ CABINS × {UP}" org.eventb.core.generated="false" org.eventb.core.label="shafts_init"/>
</org.eventb.core.event>
<org.eventb.core.variable name="_oghbUZ94Eeq6js3PozKjqQ" org.eventb.core.generated="false" org.eventb.core.identifier="floor"/>
<org.eventb.core.variable name="_ogiCYJ94Eeq6js3PozKjqQ" org.eventb.core.generated="false" org.eventb.core.identifier="shaft"/>
<org.eventb.core.event name="_ogipcJ94Eeq6js3PozKjqQ" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="CabinMovesDown">
<org.eventb.core.refinesEvent name="_ogjQgJ94Eeq6js3PozKjqQ" org.eventb.core.target="CabinMovesDown"/>
<org.eventb.core.guard name="_r7I2IJ96Eeq6js3PozKjqQ" org.eventb.core.comment="SAF 8" org.eventb.core.generated="false" org.eventb.core.label="lower_floor_free" org.eventb.core.predicate="∀c·c ∈ dom(floor) ∧ shaft(c) = DOWN ⇒ (floor(cabin) − 1) ≠ floor(c)"/>
<org.eventb.core.guard name="_ogj3kJ94Eeq6js3PozKjqQ" org.eventb.core.generated="false" org.eventb.core.label="shaft_down" org.eventb.core.predicate="shaft(cabin) = DOWN"/>
</org.eventb.core.event>
<org.eventb.core.event name="_ogkeoJ94Eeq6js3PozKjqQ" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.generated="false" org.eventb.core.label="CabinMovesUp">
<org.eventb.core.refinesEvent name="_oglFsJ94Eeq6js3PozKjqQ" org.eventb.core.target="CabinMovesUp"/>
<org.eventb.core.guard name="_r7KEQJ96Eeq6js3PozKjqQ" org.eventb.core.comment="SAF 8" org.eventb.core.generated="false" org.eventb.core.label="upper_floor_free" org.eventb.core.predicate="∀c·c ∈ dom(floor) ∧ shaft(c) = UP ⇒ (floor(cabin) + 1) ≠ floor(c)"/>
<org.eventb.core.guard name="_oglswZ94Eeq6js3PozKjqQ" org.eventb.core.generated="false" org.eventb.core.label="shaft_up" org.eventb.core.predicate="shaft(cabin) = UP"/>
</org.eventb.core.event>
<org.eventb.core.event name="_ogmT0J94Eeq6js3PozKjqQ" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="CabinUpToDown">
<org.eventb.core.parameter name="_ogm64J94Eeq6js3PozKjqQ" org.eventb.core.generated="false" org.eventb.core.identifier="cabin"/>
<org.eventb.core.guard name="_0DMRoJ-WEeq6js3PozKjqQ" org.eventb.core.comment="REQ 4" org.eventb.core.generated="false" org.eventb.core.label="at_top_floor" org.eventb.core.predicate="floor(cabin) = TOP_FLOOR"/>
<org.eventb.core.guard name="_0DM4sJ-WEeq6js3PozKjqQ" org.eventb.core.generated="false" org.eventb.core.label="in_up_shaft" org.eventb.core.predicate="shaft(cabin) = UP"/>
<org.eventb.core.guard name="_0DNfwJ-WEeq6js3PozKjqQ" org.eventb.core.comment="SAF 8" org.eventb.core.generated="false" org.eventb.core.label="top_right_free" org.eventb.core.predicate="∀c·c ∈ dom(shaft) ∧ shaft(c) = DOWN ⇒ floor(c) ≠ TOP_FLOOR"/>
<org.eventb.core.action name="_0DNfwZ-WEeq6js3PozKjqQ" org.eventb.core.assignment="shaft(cabin) ≔ DOWN" org.eventb.core.generated="false" org.eventb.core.label="up_to_down"/>
</org.eventb.core.event>
<org.eventb.core.event name="_ogowEJ94Eeq6js3PozKjqQ" org.eventb.core.convergence="0" org.eventb.core.extended="false" org.eventb.core.generated="false" org.eventb.core.label="CabinDownToUp">
<org.eventb.core.parameter name="_ogp-MJ94Eeq6js3PozKjqQ" org.eventb.core.generated="false" org.eventb.core.identifier="cabin"/>
<org.eventb.core.guard name="_0DOt4J-WEeq6js3PozKjqQ" org.eventb.core.comment="REQ 5" org.eventb.core.generated="false" org.eventb.core.label="at_ground_floor" org.eventb.core.predicate="floor(cabin) = 0"/>
<org.eventb.core.guard name="_0DPU8J-WEeq6js3PozKjqQ" org.eventb.core.generated="false" org.eventb.core.label="in_down_shaft" org.eventb.core.predicate="shaft(cabin) = DOWN"/>
<org.eventb.core.guard name="_0DP8AJ-WEeq6js3PozKjqQ" org.eventb.core.comment="SAF 8" org.eventb.core.generated="false" org.eventb.core.label="ground_left_free" org.eventb.core.predicate="∀c·c ∈ dom(shaft) ∧ shaft(c) = UP ⇒ floor(c) ≠ 0"/>
<org.eventb.core.action name="_0DQjEJ-WEeq6js3PozKjqQ" org.eventb.core.assignment="shaft(cabin) ≔ UP" org.eventb.core.generated="false" org.eventb.core.label="down_to_up"/>
</org.eventb.core.event>
<org.eventb.core.invariant name="_G2fpUJ97Eeq6js3PozKjqQ" org.eventb.core.generated="false" org.eventb.core.label="shaft_type" org.eventb.core.predicate="shaft ∈ CABINS → SHAFTS"/>
</org.eventb.core.machineFile>