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.
 
 
 
 

708 lines
23 KiB

{
"jani-version":1,
"features":[
"derived-operators"
],
"name":"Converted from PRISM by IscasMC",
"type":"pta",
"actions":[
{
"name":"tau__"
},
{
"name":"send_used"
},
{
"name":"send_fresh"
},
{
"name":"recv"
}
],
"variables":[
{
"name":"s",
"type":{
"kind":"bounded",
"base":"int",
"lower-bound":0,
"upper-bound":2
}
},
{
"name":"probes",
"type":{
"kind":"bounded",
"base":"int",
"lower-bound":0,
"upper-bound":4
}
},
{
"name":"ip",
"type":{
"kind":"bounded",
"base":"int",
"lower-bound":0,
"upper-bound":2
}
},
{
"name":"x",
"type":"clock"
},
{
"name":"e",
"type":{
"kind":"bounded",
"base":"int",
"lower-bound":0,
"upper-bound":2
}
},
{
"name":"y",
"type":"clock"
}
],
"observables":[
{
"name":"\"time\""
}
],
"initial-states":{
"exp":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"=",
"left":"s",
"right":0
},
"right":{
"op":"=",
"left":"probes",
"right":0
}
},
"right":{
"op":"=",
"left":"ip",
"right":0
}
},
"right":{
"op":"=",
"left":"x",
"right":0
}
},
"right":{
"op":"=",
"left":"e",
"right":0
}
},
"right":{
"op":"=",
"left":"y",
"right":0
}
}
},
"automata":[
{
"name":"sender",
"locations":[
{
"name":"location",
"observables":[
{
"ref":"\"time\"",
"value":1
}
],
"invariant":{
"exp":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"⇒",
"left":{
"op":"=",
"left":"s",
"right":0
},
"right":{
"op":"≤",
"left":"x",
"right":0
}
},
"right":{
"op":"⇒",
"left":{
"op":"=",
"left":"s",
"right":1
},
"right":{
"op":"≤",
"left":"x",
"right":20
}
}
},
"right":{
"op":"⇒",
"left":{
"op":"=",
"left":"s",
"right":2
},
"right":true
}
}
}
}
],
"initial-locations":[
"location"
],
"edges":[
{
"location":"location",
"action":"tau__",
"guard":{
"exp":{
"op":"=",
"left":"s",
"right":0
}
},
"destinations":[
{
"probability":{
"exp":0.5000000
},
"location":"location",
"assignments":[
{
"ref":"s",
"value":1
},
{
"ref":"ip",
"value":1
}
],
"observables":[
]
},
{
"probability":{
"exp":0.5000000
},
"location":"location",
"assignments":[
{
"ref":"s",
"value":1
},
{
"ref":"ip",
"value":2
}
],
"observables":[
]
}
]
},
{
"location":"location",
"action":"send_used",
"guard":{
"exp":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"=",
"left":"s",
"right":1
},
"right":{
"op":"=",
"left":"x",
"right":20
}
},
"right":{
"op":"=",
"left":"ip",
"right":2
}
},
"right":{
"op":"<",
"left":"probes",
"right":4
}
}
},
"destinations":[
{
"probability":{
"exp":1
},
"location":"location",
"assignments":[
{
"ref":"probes",
"value":{
"op":"+",
"left":"probes",
"right":1
}
},
{
"ref":"x",
"value":0
}
],
"observables":[
]
}
]
},
{
"location":"location",
"action":"send_fresh",
"guard":{
"exp":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"=",
"left":"s",
"right":1
},
"right":{
"op":"=",
"left":"x",
"right":20
}
},
"right":{
"op":"=",
"left":"ip",
"right":1
}
},
"right":{
"op":"<",
"left":"probes",
"right":4
}
}
},
"destinations":[
{
"probability":{
"exp":1
},
"location":"location",
"assignments":[
{
"ref":"probes",
"value":{
"op":"+",
"left":"probes",
"right":1
}
},
{
"ref":"x",
"value":0
}
],
"observables":[
]
}
]
},
{
"location":"location",
"action":"tau__",
"guard":{
"exp":{
"op":"∧",
"left":{
"op":"∧",
"left":{
"op":"=",
"left":"s",
"right":1
},
"right":{
"op":"=",
"left":"x",
"right":20
}
},
"right":{
"op":"=",
"left":"probes",
"right":4
}
}
},
"destinations":[
{
"probability":{
"exp":1
},
"location":"location",
"assignments":[
{
"ref":"s",
"value":2
},
{
"ref":"x",
"value":0
}
],
"observables":[
]
}
]
},
{
"location":"location",
"action":"recv",
"guard":{
"exp":{
"op":"=",
"left":"s",
"right":1
}
},
"destinations":[
{
"probability":{
"exp":1
},
"location":"location",
"assignments":[
{
"ref":"s",
"value":0
},
{
"ref":"x",
"value":0
},
{
"ref":"ip",
"value":0
},
{
"ref":"probes",
"value":0
}
],
"observables":[
]
}
]
},
{
"location":"location",
"action":"tau__",
"guard":{
"exp":{
"op":"=",
"left":"s",
"right":2
}
},
"destinations":[
{
"probability":{
"exp":1
},
"location":"location",
"assignments":[
],
"observables":[
]
}
]
}
]
},
{
"name":"environment",
"locations":[
{
"name":"location",
"invariant":{
"exp":{
"op":"∧",
"left":{
"op":"⇒",
"left":{
"op":"=",
"left":"e",
"right":0
},
"right":true
},
"right":{
"op":"⇒",
"left":{
"op":"≥",
"left":"e",
"right":1
},
"right":{
"op":"≤",
"left":"y",
"right":5
}
}
}
}
}
],
"initial-locations":[
"location"
],
"edges":[
{
"location":"location",
"action":"send_fresh",
"guard":{
"exp":{
"op":"=",
"left":"e",
"right":0
}
},
"destinations":[
{
"probability":{
"exp":1
},
"location":"location",
"assignments":[
]
}
]
},
{
"location":"location",
"action":"send_used",
"guard":{
"exp":{
"op":"=",
"left":"e",
"right":0
}
},
"destinations":[
{
"probability":{
"exp":0.1000000
},
"location":"location",
"assignments":[
{
"ref":"e",
"value":0
},
{
"ref":"y",
"value":0
}
]
},
{
"probability":{
"exp":0.9000000
},
"location":"location",
"assignments":[
{
"ref":"e",
"value":1
},
{
"ref":"y",
"value":0
}
]
}
]
},
{
"location":"location",
"action":"tau__",
"guard":{
"exp":{
"op":"∧",
"left":{
"op":"=",
"left":"e",
"right":1
},
"right":{
"op":"≥",
"left":"y",
"right":1
}
}
},
"destinations":[
{
"probability":{
"exp":0.1000000
},
"location":"location",
"assignments":[
{
"ref":"e",
"value":0
},
{
"ref":"y",
"value":0
}
],
"observables":[
]
},
{
"probability":{
"exp":0.9000000
},
"location":"location",
"assignments":[
{
"ref":"e",
"value":2
},
{
"ref":"y",
"value":0
}
],
"observables":[
]
}
]
},
{
"location":"location",
"action":"recv",
"guard":{
"exp":{
"op":"∧",
"left":{
"op":"=",
"left":"e",
"right":2
},
"right":{
"op":"≥",
"left":"y",
"right":1
}
}
},
"destinations":[
{
"probability":{
"exp":1
},
"location":"location",
"assignments":[
{
"ref":"e",
"value":0
},
{
"ref":"y",
"value":0
}
]
}
]
}
]
}
],
"system":{
"elements":[
{
"automaton":"sender"
},
{
"automaton":"environment"
}
],
"syncs":[
{
"synchronise":[
"send_used",
"send_used"
],
"result":"send_used"
},
{
"synchronise":[
"send_fresh",
"send_fresh"
],
"result":"send_fresh"
},
{
"synchronise":[
"recv",
"recv"
],
"result":"recv"
},
{
"synchronise":[
"tau__",
null
],
"result":"tau__"
},
{
"synchronise":[
null,
"tau__"
],
"result":"tau__"
}
]
}
}