6 changed files with 396 additions and 4 deletions
			
			
		- 
					358lib/stormpy/examples/files/dtmc/die.jani
- 
					1src/core/input.cpp
- 
					11src/storage/expressions.cpp
- 
					2tests/core/test_modelchecking.py
- 
					6tests/core/test_parse.py
- 
					22tests/storage/test_model.py
| @ -0,0 +1,358 @@ | |||||
|  | { | ||||
|  | 	"jani-version": 1, | ||||
|  | 	"name": "die.jani", | ||||
|  | 	"type": "dtmc", | ||||
|  | 	"features": [ "derived-operators" ], | ||||
|  | 	"variables": [ | ||||
|  | 		{ | ||||
|  | 			"name": "s", | ||||
|  | 			"type": { | ||||
|  | 				"base": "int", | ||||
|  | 				"kind": "bounded", | ||||
|  | 				"lower-bound": 0, | ||||
|  | 				"upper-bound": 7 | ||||
|  | 			}, | ||||
|  | 			"initial-value": 0 | ||||
|  | 		}, | ||||
|  | 		{ | ||||
|  | 			"name": "d", | ||||
|  | 			"type": { | ||||
|  | 				"base": "int", | ||||
|  | 				"kind": "bounded", | ||||
|  | 				"lower-bound": 0, | ||||
|  | 				"upper-bound": 6 | ||||
|  | 			}, | ||||
|  | 			"initial-value": 0 | ||||
|  | 		} | ||||
|  | 	], | ||||
|  | 	"properties": [ | ||||
|  | 		{ | ||||
|  | 			"name": "Probability to throw a six", | ||||
|  | 			"expression": { | ||||
|  | 				"op": "filter", | ||||
|  | 				"fun": "max", | ||||
|  | 				"states": { "op": "initial" }, | ||||
|  | 				"values": { | ||||
|  | 					"op": "Pmin", | ||||
|  | 					"exp": { | ||||
|  | 						"op": "U", | ||||
|  | 						"left": true, | ||||
|  | 						"right": { | ||||
|  | 							"op": "∧", | ||||
|  | 							"left": { | ||||
|  | 								"op": "=", | ||||
|  | 								"left": "s", | ||||
|  | 								"right": 7 | ||||
|  | 							}, | ||||
|  | 							"right": { | ||||
|  | 								"op": "=", | ||||
|  | 								"left": "d", | ||||
|  | 								"right": 6 | ||||
|  | 							} | ||||
|  | 						} | ||||
|  | 					} | ||||
|  | 				} | ||||
|  | 			} | ||||
|  | 		}, | ||||
|  | 		{ | ||||
|  | 			"name": "Expected number of coin flips", | ||||
|  | 			"expression": { | ||||
|  | 				"op": "filter", | ||||
|  | 				"fun": "max", | ||||
|  | 				"states": { "op": "initial" }, | ||||
|  | 				"values": { | ||||
|  | 					"op": "Emin", | ||||
|  | 					"accumulate": [ "steps" ], | ||||
|  | 					"exp": 1, | ||||
|  | 					"reach": { | ||||
|  | 						"op": "=", | ||||
|  | 						"left": "s", | ||||
|  | 						"right": 7 | ||||
|  | 					} | ||||
|  | 				} | ||||
|  | 			} | ||||
|  | 		} | ||||
|  | 	], | ||||
|  | 	"automata": [ | ||||
|  | 		{ | ||||
|  | 			"name": "die", | ||||
|  | 			"locations": [{ "name": "l" }], | ||||
|  | 			"initial-locations": ["l"], | ||||
|  | 			"edges": [ | ||||
|  | 				{ | ||||
|  | 					"location": "l", | ||||
|  | 					"guard": { | ||||
|  | 						"exp": { | ||||
|  | 							"op": "=", | ||||
|  | 							"left": "s", | ||||
|  | 							"right": 0 | ||||
|  | 						} | ||||
|  | 					}, | ||||
|  | 					"destinations": [ | ||||
|  | 						{ | ||||
|  | 							"location": "l", | ||||
|  | 							"probability": { "exp": 0.5 }, | ||||
|  | 							"assignments": [ | ||||
|  | 								{ | ||||
|  | 									"ref": "s", | ||||
|  | 									"value": 1 | ||||
|  | 								} | ||||
|  | 							] | ||||
|  | 						}, | ||||
|  | 						{ | ||||
|  | 							"location": "l", | ||||
|  | 							"probability": { "exp": 0.5 }, | ||||
|  | 							"assignments": [ | ||||
|  | 								{ | ||||
|  | 									"ref": "s", | ||||
|  | 									"value": 2 | ||||
|  | 								} | ||||
|  | 							] | ||||
|  | 						} | ||||
|  | 					] | ||||
|  | 				}, | ||||
|  | 				{ | ||||
|  | 					"location": "l", | ||||
|  | 					"guard": { | ||||
|  | 						"exp": { | ||||
|  | 							"left": "s", | ||||
|  | 							"op": "=", | ||||
|  | 							"right": 1 | ||||
|  | 						} | ||||
|  | 					}, | ||||
|  | 					"destinations": [ | ||||
|  | 						{ | ||||
|  | 							"location": "l", | ||||
|  | 							"probability": { "exp": 0.5 }, | ||||
|  | 							"assignments": [ | ||||
|  | 								{ | ||||
|  | 									"ref": "s", | ||||
|  | 									"value": 3 | ||||
|  | 								} | ||||
|  | 							] | ||||
|  | 						}, | ||||
|  | 						{ | ||||
|  | 							"location": "l", | ||||
|  | 							"probability": { "exp": 0.5 }, | ||||
|  | 							"assignments": [ | ||||
|  | 								{ | ||||
|  | 									"ref": "s", | ||||
|  | 									"value": 4 | ||||
|  | 								} | ||||
|  | 							] | ||||
|  | 						} | ||||
|  | 					] | ||||
|  | 				}, | ||||
|  | 				{ | ||||
|  | 					"location": "l", | ||||
|  | 					"guard": { | ||||
|  | 						"exp": { | ||||
|  | 							"left": "s", | ||||
|  | 							"op": "=", | ||||
|  | 							"right": 2 | ||||
|  | 						} | ||||
|  | 					}, | ||||
|  | 					"destinations": [ | ||||
|  | 						{ | ||||
|  | 							"location": "l", | ||||
|  | 							"probability": { "exp": 0.5 }, | ||||
|  | 							"assignments": [ | ||||
|  | 								{ | ||||
|  | 									"ref": "s", | ||||
|  | 									"value": 5 | ||||
|  | 								} | ||||
|  | 							] | ||||
|  | 						}, | ||||
|  | 						{ | ||||
|  | 							"location": "l", | ||||
|  | 							"probability": { "exp": 0.5 }, | ||||
|  | 							"assignments": [ | ||||
|  | 								{ | ||||
|  | 									"ref": "s", | ||||
|  | 									"value": 6 | ||||
|  | 								} | ||||
|  | 							] | ||||
|  | 						} | ||||
|  | 					] | ||||
|  | 				}, | ||||
|  | 				{ | ||||
|  | 					"location": "l", | ||||
|  | 					"guard": { | ||||
|  | 						"exp": { | ||||
|  | 							"left": "s", | ||||
|  | 							"op": "=", | ||||
|  | 							"right": 3 | ||||
|  | 						} | ||||
|  | 					}, | ||||
|  | 					"destinations": [ | ||||
|  | 						{ | ||||
|  | 							"location": "l", | ||||
|  | 							"probability": { "exp": 0.5 },  | ||||
|  | 							"assignments": [ | ||||
|  | 								{ | ||||
|  | 									"ref": "s", | ||||
|  | 									"value": 1 | ||||
|  | 								} | ||||
|  | 							] | ||||
|  | 						}, | ||||
|  | 						{ | ||||
|  | 							"location": "l", | ||||
|  | 							"probability": { "exp": 0.5 }, | ||||
|  | 							"assignments": [ | ||||
|  | 								{ | ||||
|  | 									"ref": "s", | ||||
|  | 									"value": 7 | ||||
|  | 								}, | ||||
|  | 								{ | ||||
|  | 									"ref": "d", | ||||
|  | 									"value": 1 | ||||
|  | 								} | ||||
|  | 							] | ||||
|  | 						} | ||||
|  | 					] | ||||
|  | 				}, | ||||
|  | 				{ | ||||
|  | 					"location": "l", | ||||
|  | 					"guard": { | ||||
|  | 						"exp": { | ||||
|  | 							"left": "s", | ||||
|  | 							"op": "=", | ||||
|  | 							"right": 4 | ||||
|  | 						} | ||||
|  | 					}, | ||||
|  | 					"destinations": [ | ||||
|  | 						{ | ||||
|  | 							"location": "l", | ||||
|  | 							"probability": { "exp": 0.5 }, | ||||
|  | 							"assignments": [ | ||||
|  | 								{ | ||||
|  | 									"ref": "s", | ||||
|  | 									"value": 7 | ||||
|  | 								}, | ||||
|  | 								{ | ||||
|  | 									"ref": "d", | ||||
|  | 									"value": 2 | ||||
|  | 								} | ||||
|  | 							] | ||||
|  | 						}, | ||||
|  | 						{ | ||||
|  | 							"location": "l", | ||||
|  | 							"probability": { "exp": 0.5 }, | ||||
|  | 							"assignments": [ | ||||
|  | 								{ | ||||
|  | 									"ref": "s", | ||||
|  | 									"value": 7 | ||||
|  | 								}, | ||||
|  | 								{ | ||||
|  | 									"ref": "d", | ||||
|  | 									"value": 3 | ||||
|  | 								} | ||||
|  | 							] | ||||
|  | 						} | ||||
|  | 					] | ||||
|  | 				}, | ||||
|  | 				{ | ||||
|  | 					"location": "l", | ||||
|  | 					"guard": { | ||||
|  | 						"exp": { | ||||
|  | 							"left": "s", | ||||
|  | 							"op": "=", | ||||
|  | 							"right": 5 | ||||
|  | 						} | ||||
|  | 					}, | ||||
|  | 					"destinations": [ | ||||
|  | 						{ | ||||
|  | 							"location": "l", | ||||
|  | 							"probability": { "exp": 0.5 }, | ||||
|  | 							"assignments": [ | ||||
|  | 								{ | ||||
|  | 									"ref": "s", | ||||
|  | 									"value": 7 | ||||
|  | 								}, | ||||
|  | 								{ | ||||
|  | 									"ref": "d", | ||||
|  | 									"value": 4 | ||||
|  | 								} | ||||
|  | 							] | ||||
|  | 						}, | ||||
|  | 						{ | ||||
|  | 							"location": "l", | ||||
|  | 							"probability": { "exp": 0.5 }, | ||||
|  | 							"assignments": [ | ||||
|  | 								{ | ||||
|  | 									"ref": "s", | ||||
|  | 									"value": 7 | ||||
|  | 								}, | ||||
|  | 								{ | ||||
|  | 									"ref": "d", | ||||
|  | 									"value": 5 | ||||
|  | 								} | ||||
|  | 							] | ||||
|  | 						} | ||||
|  | 					] | ||||
|  | 				}, | ||||
|  | 				{ | ||||
|  | 					"location": "l", | ||||
|  | 					"guard": { | ||||
|  | 						"exp": { | ||||
|  | 							"left": "s", | ||||
|  | 							"op": "=", | ||||
|  | 							"right": 6 | ||||
|  | 						} | ||||
|  | 					}, | ||||
|  | 					"destinations": [ | ||||
|  | 						{ | ||||
|  | 							"location": "l", | ||||
|  | 							"probability": { "exp": 0.5 }, | ||||
|  | 							"assignments": [ | ||||
|  | 								{ | ||||
|  | 									"ref": "s", | ||||
|  | 									"value": 2 | ||||
|  | 								} | ||||
|  | 							] | ||||
|  | 						}, | ||||
|  | 						{ | ||||
|  | 							"location": "l", | ||||
|  | 							"probability": { "exp": 0.5 }, | ||||
|  | 							"assignments": [ | ||||
|  | 								{ | ||||
|  | 									"ref": "s", | ||||
|  | 									"value": 7 | ||||
|  | 								}, | ||||
|  | 								{ | ||||
|  | 									"ref": "d", | ||||
|  | 									"value": 6 | ||||
|  | 								} | ||||
|  | 							] | ||||
|  | 						} | ||||
|  | 					] | ||||
|  | 				}, | ||||
|  | 				{ | ||||
|  | 					"location": "l", | ||||
|  | 					"guard": { | ||||
|  | 						"exp": { | ||||
|  | 							"left": "s", | ||||
|  | 							"op": "=", | ||||
|  | 							"right": 7 | ||||
|  | 						} | ||||
|  | 					}, | ||||
|  | 					"destinations": [ | ||||
|  | 						{ | ||||
|  | 							"location": "l", | ||||
|  | 							"assignments": [ | ||||
|  | 								{ | ||||
|  | 									"ref": "s", | ||||
|  | 									"value": 7 | ||||
|  | 								} | ||||
|  | 							] | ||||
|  | 						} | ||||
|  | 					] | ||||
|  | 				} | ||||
|  | 			] | ||||
|  | 			 | ||||
|  | 		} | ||||
|  | 	],  | ||||
|  | 	"system": { | ||||
|  | 		"elements": [ { "automaton": "die" } ] | ||||
|  | 	} | ||||
|  | } | ||||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue