You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1556 lines
53 KiB

{
"jani-version":1,
"features":[
"derived-operators"
],
"name":"Converted from PRISM by IscasMC",
"type":"ctmc",
"actions":[
{
"name":"startLeft"
},
{
"name":"repairLeft"
},
{
"name":"tau__"
},
{
"name":"startRight"
},
{
"name":"startToLeft"
},
{
"name":"startToRight"
},
{
"name":"startLine"
},
{
"name":"repairRight"
},
{
"name":"repairToLeft"
},
{
"name":"repairToRight"
},
{
"name":"repairLine"
}
],
"constants":[
{
"name":"N",
"type":"int"
}
],
"variables":[
{
"name":"left_n",
"type":{
"kind":"bounded",
"base":"int",
"lower-bound":0,
"upper-bound":"N"
}
},
{
"name":"left",
"type":"bool"
},
{
"name":"r",
"type":"bool"
},
{
"name":"line",
"type":"bool"
},
{
"name":"line_n",
"type":"bool"
},
{
"name":"right_n",
"type":{
"kind":"bounded",
"base":"int",
"lower-bound":0,
"upper-bound":"N"
}
},
{
"name":"right",
"type":"bool"
},
{
"name":"toleft",
"type":"bool"
},
{
"name":"toleft_n",
"type":"bool"
},
{
"name":"toright",
"type":"bool"
},
{
"name":"toright_n",
"type":"bool"
}
],
"observables":[
{
"name":"\"percent_op\""
},
{
"name":"\"time_not_min\""
},
{
"name":"\"num_repairs\""
}
],
"initial-states":{
"exp":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"=",
"left":"left_n",
"right":"N"
},
"right":{
"op":"=",
"left":"left",
"right":false
}
},
"right":{
"op":"=",
"left":"r",
"right":false
}
},
"right":{
"op":"=",
"left":"line",
"right":false
}
},
"right":{
"op":"=",
"left":"line_n",
"right":true
}
},
"right":{
"op":"=",
"left":"right_n",
"right":"N"
}
},
"right":{
"op":"=",
"left":"right",
"right":false
}
},
"right":{
"op":"=",
"left":"toleft",
"right":false
}
},
"right":{
"op":"=",
"left":"toleft_n",
"right":true
}
},
"right":{
"op":"=",
"left":"toright",
"right":false
}
},
"right":{
"op":"=",
"left":"toright_n",
"right":true
}
}
},
"automata":[
{
"name":"Left",
"locations":[
{
"name":"location",
"observables":[
{
"ref":"\"percent_op\"",
"value":{
"op":"/",
"left":{
"op":"*",
"left":100,
"right":{
"op":"+",
"left":"left_n",
"right":"right_n"
}
},
"right":{
"op":"*",
"left":2,
"right":"N"
}
}
},
{
"ref":"\"time_not_min\"",
"value":{
"op":"?:",
"args":[
{
"op":"¬",
"exp":{
"op":"∨",
"left":{
"op":"∨",
"left":{
"op":"∧",
"left":{
"op":"≥",
"left":"left_n",
"right":{
"op":"⌊⌋",
"exp":{
"op":"*",
"left":0.7500000,
"right":"N"
}
}
},
"right":"toleft_n"
},
"right":{
"op":"∧",
"left":{
"op":"≥",
"left":"right_n",
"right":{
"op":"⌊⌋",
"exp":{
"op":"*",
"left":0.7500000,
"right":"N"
}
}
},
"right":"toright_n"
}
},
"right":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"≥",
"left":{
"op":"+",
"left":"left_n",
"right":"right_n"
},
"right":{
"op":"⌊⌋",
"exp":{
"op":"*",
"left":0.7500000,
"right":"N"
}
}
},
"right":"toleft_n"
},
"right":"line_n"
},
"right":"toright_n"
}
}
},
1,
0
]
}
}
]
}
],
"initial-locations":[
"location"
],
"edges":[
{
"location":"location",
"action":"startLeft",
"rate":{
"exp":1
},
"guard":{
"exp":{
"op":"∧",
"left":{
"op":"¬",
"exp":"left"
},
"right":{
"op":"<",
"left":"left_n",
"right":"N"
}
}
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":1,
"right":1
}
},
"location":"location",
"assignments":[
{
"ref":"left",
"value":true
}
],
"observables":[
]
}
]
},
{
"location":"location",
"action":"repairLeft",
"rate":{
"exp":1
},
"guard":{
"exp":{
"op":"∧",
"left":"left",
"right":{
"op":"<",
"left":"left_n",
"right":"N"
}
}
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":1,
"right":1
}
},
"location":"location",
"assignments":[
{
"ref":"left",
"value":false
},
{
"ref":"left_n",
"value":{
"op":"+",
"left":"left_n",
"right":1
}
}
],
"observables":[
{
"ref":"\"num_repairs\"",
"value":1
}
]
}
]
},
{
"location":"location",
"action":"tau__",
"rate":{
"exp":{
"op":"*",
"left":{
"op":"/",
"left":1,
"right":500
},
"right":"left_n"
}
},
"guard":{
"exp":{
"op":">",
"left":"left_n",
"right":0
}
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":{
"op":"*",
"left":{
"op":"/",
"left":1,
"right":500
},
"right":"left_n"
},
"right":{
"op":"*",
"left":{
"op":"/",
"left":1,
"right":500
},
"right":"left_n"
}
}
},
"location":"location",
"assignments":[
{
"ref":"left_n",
"value":{
"op":"-",
"left":"left_n",
"right":1
}
}
],
"observables":[
]
}
]
}
]
},
{
"name":"Repairman",
"locations":[
{
"name":"location"
}
],
"initial-locations":[
"location"
],
"edges":[
{
"location":"location",
"action":"startLeft",
"rate":{
"exp":10
},
"guard":{
"exp":{
"op":"¬",
"exp":"r"
}
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":10,
"right":10
}
},
"location":"location",
"assignments":[
{
"ref":"r",
"value":true
}
]
}
]
},
{
"location":"location",
"action":"startRight",
"rate":{
"exp":10
},
"guard":{
"exp":{
"op":"¬",
"exp":"r"
}
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":10,
"right":10
}
},
"location":"location",
"assignments":[
{
"ref":"r",
"value":true
}
],
"observables":[
]
}
]
},
{
"location":"location",
"action":"startToLeft",
"rate":{
"exp":10
},
"guard":{
"exp":{
"op":"¬",
"exp":"r"
}
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":10,
"right":10
}
},
"location":"location",
"assignments":[
{
"ref":"r",
"value":true
}
],
"observables":[
]
}
]
},
{
"location":"location",
"action":"startToRight",
"rate":{
"exp":10
},
"guard":{
"exp":{
"op":"¬",
"exp":"r"
}
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":10,
"right":10
}
},
"location":"location",
"assignments":[
{
"ref":"r",
"value":true
}
],
"observables":[
]
}
]
},
{
"location":"location",
"action":"startLine",
"rate":{
"exp":10
},
"guard":{
"exp":{
"op":"¬",
"exp":"r"
}
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":10,
"right":10
}
},
"location":"location",
"assignments":[
{
"ref":"r",
"value":true
}
],
"observables":[
]
}
]
},
{
"location":"location",
"action":"repairLeft",
"rate":{
"exp":2
},
"guard":{
"exp":"r"
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":2,
"right":2
}
},
"location":"location",
"assignments":[
{
"ref":"r",
"value":false
}
]
}
]
},
{
"location":"location",
"action":"repairRight",
"rate":{
"exp":2
},
"guard":{
"exp":"r"
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":2,
"right":2
}
},
"location":"location",
"assignments":[
{
"ref":"r",
"value":false
}
],
"observables":[
{
"ref":"\"num_repairs\"",
"value":1
}
]
}
]
},
{
"location":"location",
"action":"repairToLeft",
"rate":{
"exp":0.2500000
},
"guard":{
"exp":"r"
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":0.2500000,
"right":0.2500000
}
},
"location":"location",
"assignments":[
{
"ref":"r",
"value":false
}
],
"observables":[
{
"ref":"\"num_repairs\"",
"value":1
}
]
}
]
},
{
"location":"location",
"action":"repairToRight",
"rate":{
"exp":0.2500000
},
"guard":{
"exp":"r"
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":0.2500000,
"right":0.2500000
}
},
"location":"location",
"assignments":[
{
"ref":"r",
"value":false
}
],
"observables":[
{
"ref":"\"num_repairs\"",
"value":1
}
]
}
]
},
{
"location":"location",
"action":"repairLine",
"rate":{
"exp":0.1250000
},
"guard":{
"exp":"r"
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":0.1250000,
"right":0.1250000
}
},
"location":"location",
"assignments":[
{
"ref":"r",
"value":false
}
],
"observables":[
{
"ref":"\"num_repairs\"",
"value":1
}
]
}
]
}
]
},
{
"name":"Line",
"locations":[
{
"name":"location"
}
],
"initial-locations":[
"location"
],
"edges":[
{
"location":"location",
"action":"startLine",
"rate":{
"exp":1
},
"guard":{
"exp":{
"op":"∧",
"left":{
"op":"¬",
"exp":"line"
},
"right":{
"op":"¬",
"exp":"line_n"
}
}
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":1,
"right":1
}
},
"location":"location",
"assignments":[
{
"ref":"line",
"value":true
}
]
}
]
},
{
"location":"location",
"action":"repairLine",
"rate":{
"exp":1
},
"guard":{
"exp":{
"op":"∧",
"left":"line",
"right":{
"op":"¬",
"exp":"line_n"
}
}
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":1,
"right":1
}
},
"location":"location",
"assignments":[
{
"ref":"line",
"value":false
},
{
"ref":"line_n",
"value":true
}
]
}
]
},
{
"location":"location",
"action":"tau__",
"rate":{
"exp":{
"op":"/",
"left":1,
"right":5000
}
},
"guard":{
"exp":"line_n"
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":{
"op":"/",
"left":1,
"right":5000
},
"right":{
"op":"/",
"left":1,
"right":5000
}
}
},
"location":"location",
"assignments":[
{
"ref":"line_n",
"value":false
}
],
"observables":[
]
}
]
}
]
},
{
"name":"Right",
"locations":[
{
"name":"location"
}
],
"initial-locations":[
"location"
],
"edges":[
{
"location":"location",
"action":"startRight",
"rate":{
"exp":1
},
"guard":{
"exp":{
"op":"∧",
"left":{
"op":"¬",
"exp":"right"
},
"right":{
"op":"<",
"left":"right_n",
"right":"N"
}
}
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":1,
"right":1
}
},
"location":"location",
"assignments":[
{
"ref":"right",
"value":true
}
]
}
]
},
{
"location":"location",
"action":"repairRight",
"rate":{
"exp":1
},
"guard":{
"exp":{
"op":"∧",
"left":"right",
"right":{
"op":"<",
"left":"right_n",
"right":"N"
}
}
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":1,
"right":1
}
},
"location":"location",
"assignments":[
{
"ref":"right",
"value":false
},
{
"ref":"right_n",
"value":{
"op":"+",
"left":"right_n",
"right":1
}
}
]
}
]
},
{
"location":"location",
"action":"tau__",
"rate":{
"exp":{
"op":"*",
"left":{
"op":"/",
"left":1,
"right":500
},
"right":"right_n"
}
},
"guard":{
"exp":{
"op":">",
"left":"right_n",
"right":0
}
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":{
"op":"*",
"left":{
"op":"/",
"left":1,
"right":500
},
"right":"right_n"
},
"right":{
"op":"*",
"left":{
"op":"/",
"left":1,
"right":500
},
"right":"right_n"
}
}
},
"location":"location",
"assignments":[
{
"ref":"right_n",
"value":{
"op":"-",
"left":"right_n",
"right":1
}
}
],
"observables":[
]
}
]
}
]
},
{
"name":"ToLeft",
"locations":[
{
"name":"location"
}
],
"initial-locations":[
"location"
],
"edges":[
{
"location":"location",
"action":"startToLeft",
"rate":{
"exp":1
},
"guard":{
"exp":{
"op":"∧",
"left":{
"op":"¬",
"exp":"toleft"
},
"right":{
"op":"¬",
"exp":"toleft_n"
}
}
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":1,
"right":1
}
},
"location":"location",
"assignments":[
{
"ref":"toleft",
"value":true
}
]
}
]
},
{
"location":"location",
"action":"repairToLeft",
"rate":{
"exp":1
},
"guard":{
"exp":{
"op":"∧",
"left":"toleft",
"right":{
"op":"¬",
"exp":"toleft_n"
}
}
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":1,
"right":1
}
},
"location":"location",
"assignments":[
{
"ref":"toleft",
"value":false
},
{
"ref":"toleft_n",
"value":true
}
]
}
]
},
{
"location":"location",
"action":"tau__",
"rate":{
"exp":{
"op":"/",
"left":1,
"right":4000
}
},
"guard":{
"exp":"toleft_n"
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":{
"op":"/",
"left":1,
"right":4000
},
"right":{
"op":"/",
"left":1,
"right":4000
}
}
},
"location":"location",
"assignments":[
{
"ref":"toleft_n",
"value":false
}
],
"observables":[
]
}
]
}
]
},
{
"name":"ToRight",
"locations":[
{
"name":"location"
}
],
"initial-locations":[
"location"
],
"edges":[
{
"location":"location",
"action":"startToRight",
"rate":{
"exp":1
},
"guard":{
"exp":{
"op":"∧",
"left":{
"op":"¬",
"exp":"toright"
},
"right":{
"op":"¬",
"exp":"toright_n"
}
}
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":1,
"right":1
}
},
"location":"location",
"assignments":[
{
"ref":"toright",
"value":true
}
]
}
]
},
{
"location":"location",
"action":"repairToRight",
"rate":{
"exp":1
},
"guard":{
"exp":{
"op":"∧",
"left":"toright",
"right":{
"op":"¬",
"exp":"toright_n"
}
}
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":1,
"right":1
}
},
"location":"location",
"assignments":[
{
"ref":"toright",
"value":false
},
{
"ref":"toright_n",
"value":true
}
]
}
]
},
{
"location":"location",
"action":"tau__",
"rate":{
"exp":{
"op":"/",
"left":1,
"right":4000
}
},
"guard":{
"exp":"toright_n"
},
"destinations":[
{
"probability":{
"exp":{
"op":"/",
"left":{
"op":"/",
"left":1,
"right":4000
},
"right":{
"op":"/",
"left":1,
"right":4000
}
}
},
"location":"location",
"assignments":[
{
"ref":"toright_n",
"value":false
}
],
"observables":[
]
}
]
}
]
}
],
"system":{
"elements":[
{
"automaton":"Left"
},
{
"automaton":"Repairman"
},
{
"automaton":"Line"
},
{
"automaton":"Right"
},
{
"automaton":"ToLeft"
},
{
"automaton":"ToRight"
}
],
"syncs":[
{
"synchronise":[
null,
"startToRight",
null,
null,
null,
"startToRight"
],
"result":"startToRight"
},
{
"synchronise":[
null,
"repairToRight",
null,
null,
null,
"repairToRight"
],
"result":"repairToRight"
},
{
"synchronise":[
null,
"startToLeft",
null,
null,
"startToLeft",
null
],
"result":"startToLeft"
},
{
"synchronise":[
null,
"repairToLeft",
null,
null,
"repairToLeft",
null
],
"result":"repairToLeft"
},
{
"synchronise":[
null,
"startRight",
null,
"startRight",
null,
null
],
"result":"startRight"
},
{
"synchronise":[
null,
"repairRight",
null,
"repairRight",
null,
null
],
"result":"repairRight"
},
{
"synchronise":[
null,
"startLine",
"startLine",
null,
null,
null
],
"result":"startLine"
},
{
"synchronise":[
null,
"repairLine",
"repairLine",
null,
null,
null
],
"result":"repairLine"
},
{
"synchronise":[
"startLeft",
"startLeft",
null,
null,
null,
null
],
"result":"startLeft"
},
{
"synchronise":[
"repairLeft",
"repairLeft",
null,
null,
null,
null
],
"result":"repairLeft"
},
{
"synchronise":[
"tau__",
null,
null,
null,
null,
null
],
"result":"tau__"
},
{
"synchronise":[
null,
null,
"tau__",
null,
null,
null
],
"result":"tau__"
},
{
"synchronise":[
null,
null,
null,
"tau__",
null,
null
],
"result":"tau__"
},
{
"synchronise":[
null,
null,
null,
null,
"tau__",
null
],
"result":"tau__"
},
{
"synchronise":[
null,
null,
null,
null,
null,
"tau__"
],
"result":"tau__"
}
]
}
}