{ "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__" } ] } }