Benchmark embedded.8-12

Download
model.prism (0.01 MB)
property.props (0.01 MB)
model.jani (0.05 MB)

Origin
Taken from QVBS (January 2026).
The given benchmark (including parameter instantiation and property) has been considered in QComp 2019 and QComp 2020.

Original Prism model and property files have been adapted for compatibility and simplicity:
- Constants: All open constants are now explicitly set within model.prism (no need to set them via command line)
- Properties: The properties only refer to labels and rewards as defined in the model.prism file. No variables or constants are used in the property.
- Formulas: some PRISM formula declarations have been renamed so that their identify does not crash with a label.
Contents of file: model.prism
ctmc

// constants
const int MAX_COUNT = 8;
const int MIN_SENSORS = 2;
const int MIN_ACTUATORS = 1;
const double T = 12;

// rates
const double lambda_p = 1/(365*24*60*60); // 1 year
const double lambda_s = 1/(30*24*60*60); // 1 month
const double lambda_a = 1/(2*30*24*60*60); // 2 months
const double tau = 1/60; // 1 min
const double delta_f = 1/(24*60*60); // 1 day
const double delta_r = 1/30; // 30 secs

// sensors
module sensors
	
	s : [0..3] init 3; // number of sensors working
	
	[] s>1 -> s*lambda_s : (s'=s-1); // failure of a single sensor
	
endmodule

// input processor
// (takes data from sensors and passes onto main processor)
module proci
	
	i : [0..2] init 2; // 2=ok, 1=transient fault, 0=failed
	
	[] i>0 & s>=MIN_SENSORS -> lambda_p : (i'=0); // failure of processor
	[] i=2 & s>=MIN_SENSORS -> delta_f : (i'=1); // transient fault
	[input_reboot] i=1 & s>=MIN_SENSORS -> delta_r : (i'=2); // reboot after transient fault
	
endmodule

// actuators
module actuators
	
	a : [0..2] init 2; // number of actuators working
	
	[] a>0 -> a*lambda_a : (a'=a-1); // failure of a single actuator
	
endmodule

// output processor
// (receives instructions from main processor and passes onto actuators)
module proco = proci [ i=o, s=a, input_reboot=output_reboot, MIN_SENSORS=MIN_ACTUATORS ] endmodule

// main processor
// (takes data from proci, processes it, and passes instructions to proco)
module procm
	
	m : [0..1] init 1; // 1=ok, 0=failed
	count : [0..MAX_COUNT+1] init 0; // number of consecutive skipped cycles
	
	// failure of processor
	[] m=1 -> lambda_p : (m'=0);
	// processing completed before timer expires - reset skipped cycle counter
	[timeout]  comp -> tau : (count'=0);
	// processing not completed before timer expires - increment skipped cycle counter
	[timeout] !comp -> tau : (count'=min(count+1, MAX_COUNT+1));
	
endmodule

// connecting bus
module bus
	
	// flags
	// main processor has processed data from input processor
	// and sent corresponding instructions to output processor (since last timeout)
	comp : bool init true; 
	// input processor has data ready to send
	reqi : bool init true; 
	// output processor has instructions ready to be processed
	reqo : bool init false;
	
	// input processor reboots
	[input_reboot]  true -> 1 :
	// performs a computation if has already done so or
	// it is up and ouput clear (i.e. nothing waiting)
	(comp'=(comp | (m=1 & !reqo))) 
	// up therefore something to process
	& (reqi'=true)
	// something to process if not functioning and either
	// there is something already pending
	// or the main processor sends a request
	& (reqo'=!(o=2 & a>=1) & (reqo | m=1));
	
	// output processor reboots
	[output_reboot] true -> 1 :
	// performs a computation if it has already or
	// something waiting and is up
	// (can be processes as the output has come up and cleared pending requests)
	(comp'=(comp | (reqi & m=1)))
	// something to process it they are up or
	// there was already something and the main processor acts
	// (output now up must be due to main processor being down)
	& (reqi'=(i=2 & s>=2) | (reqi & m=0))
	// output and actuators up therefore nothing can be pending
	& (reqo'=false);
	
	// main processor times out
	[timeout] true -> 1 :
	// performs a computation if it is up something was pending
	// and nothing is waiting for the output
	(comp'=(reqi & !reqo & m=1))
	// something to process if up or
	// already something and main process cannot act 
	// (down or outputs pending)
	& (reqi'=(i=2 & s>=2) | (reqi & (reqo | m=0)))
	// something to process if they are not functioning and 
	// either something is already pending
	// or the main processor acts
	& (reqo'=!(o=2 & a>=1) & (reqo | (reqi & m=1)));
	
endmodule


// the system is down
formula down = (i=2&s
Contents of file: property.props
"actuators": P=? [ !"l_down" U "fail_actuators" ];
Contents of file: model.jani
{
    "actions": [
        {
            "name": "input_reboot"
        },
        {
            "name": "output_reboot"
        },
        {
            "name": "timeout"
        }
    ],
    "automata": [
        {
            "edges": [
                {
                    "destinations": [
                        {
                            "assignments": [
                                {
                                    "comment": "s <- (s - 1)",
                                    "ref": "s",
                                    "value": {
                                        "left": "s",
                                        "op": "-",
                                        "right": 1
                                    }
                                }
                            ],
                            "location": "l",
                            "probability": {
                                "comment": "((s * (1 / (((30 * 24) * 60) * 60))) / (s * (1 / (((30 * 24) * 60) * 60))))",
                                "exp": {
                                    "left": {
                                        "left": "s",
                                        "op": "*",
                                        "right": {
                                            "left": 1,
                                            "op": "/",
                                            "right": 2592000
                                        }
                                    },
                                    "op": "/",
                                    "right": {
                                        "left": "s",
                                        "op": "*",
                                        "right": {
                                            "left": 1,
                                            "op": "/",
                                            "right": 2592000
                                        }
                                    }
                                }
                            }
                        }
                    ],
                    "guard": {
                        "comment": "(s > 1)",
                        "exp": {
                            "left": "s",
                            "op": ">",
                            "right": 1
                        }
                    },
                    "location": "l",
                    "rate": {
                        "comment": "(s * (1 / (((30 * 24) * 60) * 60)))",
                        "exp": {
                            "left": "s",
                            "op": "*",
                            "right": {
                                "left": 1,
                                "op": "/",
                                "right": 2592000
                            }
                        }
                    }
                }
            ],
            "initial-locations": [
                "l"
            ],
            "locations": [
                {
                    "name": "l",
                    "transient-values": [
                        {
                            "comment": "fail_actuators <- ((o = 2) & (a < 1))",
                            "ref": "fail_actuators",
                            "value": {
                                "left": {
                                    "left": "o",
                                    "op": "=",
                                    "right": 2
                                },
                                "op": "∧",
                                "right": {
                                    "left": "a",
                                    "op": "<",
                                    "right": 1
                                }
                            }
                        },
                        {
                            "comment": "l_down <- (((((i = 2) & (s < 2)) | (count = 9)) | ((o = 2) & (a < 1))) | (m = 0))",
                            "ref": "l_down",
                            "value": {
                                "left": {
                                    "left": {
                                        "left": "m",
                                        "op": "=",
                                        "right": 0
                                    },
                                    "op": "∨",
                                    "right": {
                                        "left": "count",
                                        "op": "=",
                                        "right": 9
                                    }
                                },
                                "op": "∨",
                                "right": {
                                    "left": {
                                        "left": {
                                            "left": "o",
                                            "op": "=",
                                            "right": 2
                                        },
                                        "op": "∧",
                                        "right": {
                                            "left": "a",
                                            "op": "<",
                                            "right": 1
                                        }
                                    },
                                    "op": "∨",
                                    "right": {
                                        "left": {
                                            "left": "i",
                                            "op": "=",
                                            "right": 2
                                        },
                                        "op": "∧",
                                        "right": {
                                            "left": "s",
                                            "op": "<",
                                            "right": 2
                                        }
                                    }
                                }
                            }
                        }
                    ]
                }
            ],
            "name": "sensors",
            "variables": []
        },
        {
            "edges": [
                {
                    "destinations": [
                        {
                            "assignments": [
                                {
                                    "comment": "i <- 0",
                                    "ref": "i",
                                    "value": 0
                                }
                            ],
                            "location": "l",
                            "probability": {
                                "comment": "((1 / (((365 * 24) * 60) * 60)) / (1 / (((365 * 24) * 60) * 60)))",
                                "exp": {
                                    "left": {
                                        "left": 1,
                                        "op": "/",
                                        "right": 31536000
                                    },
                                    "op": "/",
                                    "right": {
                                        "left": 1,
                                        "op": "/",
                                        "right": 31536000
                                    }
                                }
                            }
                        }
                    ],
                    "guard": {
                        "comment": "((i > 0) & (s >= 2))",
                        "exp": {
                            "left": {
                                "left": "i",
                                "op": ">",
                                "right": 0
                            },
                            "op": "∧",
                            "right": {
                                "left": "s",
                                "op": "≥",
                                "right": 2
                            }
                        }
                    },
                    "location": "l",
                    "rate": {
                        "comment": "(1 / (((365 * 24) * 60) * 60))",
                        "exp": {
                            "left": 1,
                            "op": "/",
                            "right": 31536000
                        }
                    }
                },
                {
                    "destinations": [
                        {
                            "assignments": [
                                {
                                    "comment": "i <- 1",
                                    "ref": "i",
                                    "value": 1
                                }
                            ],
                            "location": "l",
                            "probability": {
                                "comment": "((1 / ((24 * 60) * 60)) / (1 / ((24 * 60) * 60)))",
                                "exp": {
                                    "left": {
                                        "left": 1,
                                        "op": "/",
                                        "right": 86400
                                    },
                                    "op": "/",
                                    "right": {
                                        "left": 1,
                                        "op": "/",
                                        "right": 86400
                                    }
                                }
                            }
                        }
                    ],
                    "guard": {
                        "comment": "((i = 2) & (s >= 2))",
                        "exp": {
                            "left": {
                                "left": "i",
                                "op": "=",
                                "right": 2
                            },
                            "op": "∧",
                            "right": {
                                "left": "s",
                                "op": "≥",
                                "right": 2
                            }
                        }
                    },
                    "location": "l",
                    "rate": {
                        "comment": "(1 / ((24 * 60) * 60))",
                        "exp": {
                            "left": 1,
                            "op": "/",
                            "right": 86400
                        }
                    }
                },
                {
                    "action": "input_reboot",
                    "destinations": [
                        {
                            "assignments": [
                                {
                                    "comment": "i <- 2",
                                    "ref": "i",
                                    "value": 2
                                }
                            ],
                            "location": "l",
                            "probability": {
                                "comment": "((1 / 30) / (1 / 30))",
                                "exp": {
                                    "left": {
                                        "left": 1,
                                        "op": "/",
                                        "right": 30
                                    },
                                    "op": "/",
                                    "right": {
                                        "left": 1,
                                        "op": "/",
                                        "right": 30
                                    }
                                }
                            }
                        }
                    ],
                    "guard": {
                        "comment": "((i = 1) & (s >= 2))",
                        "exp": {
                            "left": {
                                "left": "i",
                                "op": "=",
                                "right": 1
                            },
                            "op": "∧",
                            "right": {
                                "left": "s",
                                "op": "≥",
                                "right": 2
                            }
                        }
                    },
                    "location": "l",
                    "rate": {
                        "comment": "(1 / 30)",
                        "exp": {
                            "left": 1,
                            "op": "/",
                            "right": 30
                        }
                    }
                }
            ],
            "initial-locations": [
                "l"
            ],
            "locations": [
                {
                    "name": "l"
                }
            ],
            "name": "proci",
            "variables": []
        },
        {
            "edges": [
                {
                    "destinations": [
                        {
                            "assignments": [
                                {
                                    "comment": "a <- (a - 1)",
                                    "ref": "a",
                                    "value": {
                                        "left": "a",
                                        "op": "-",
                                        "right": 1
                                    }
                                }
                            ],
                            "location": "l",
                            "probability": {
                                "comment": "((a * (1 / ((((2 * 30) * 24) * 60) * 60))) / (a * (1 / ((((2 * 30) * 24) * 60) * 60))))",
                                "exp": {
                                    "left": {
                                        "left": "a",
                                        "op": "*",
                                        "right": {
                                            "left": 1,
                                            "op": "/",
                                            "right": 5184000
                                        }
                                    },
                                    "op": "/",
                                    "right": {
                                        "left": "a",
                                        "op": "*",
                                        "right": {
                                            "left": 1,
                                            "op": "/",
                                            "right": 5184000
                                        }
                                    }
                                }
                            }
                        }
                    ],
                    "guard": {
                        "comment": "(a > 0)",
                        "exp": {
                            "left": "a",
                            "op": ">",
                            "right": 0
                        }
                    },
                    "location": "l",
                    "rate": {
                        "comment": "(a * (1 / ((((2 * 30) * 24) * 60) * 60)))",
                        "exp": {
                            "left": "a",
                            "op": "*",
                            "right": {
                                "left": 1,
                                "op": "/",
                                "right": 5184000
                            }
                        }
                    }
                }
            ],
            "initial-locations": [
                "l"
            ],
            "locations": [
                {
                    "name": "l"
                }
            ],
            "name": "actuators",
            "variables": []
        },
        {
            "edges": [
                {
                    "destinations": [
                        {
                            "assignments": [
                                {
                                    "comment": "o <- 0",
                                    "ref": "o",
                                    "value": 0
                                }
                            ],
                            "location": "l",
                            "probability": {
                                "comment": "((1 / (((365 * 24) * 60) * 60)) / (1 / (((365 * 24) * 60) * 60)))",
                                "exp": {
                                    "left": {
                                        "left": 1,
                                        "op": "/",
                                        "right": 31536000
                                    },
                                    "op": "/",
                                    "right": {
                                        "left": 1,
                                        "op": "/",
                                        "right": 31536000
                                    }
                                }
                            }
                        }
                    ],
                    "guard": {
                        "comment": "((o > 0) & (a >= 1))",
                        "exp": {
                            "left": {
                                "left": "o",
                                "op": ">",
                                "right": 0
                            },
                            "op": "∧",
                            "right": {
                                "left": "a",
                                "op": "≥",
                                "right": 1
                            }
                        }
                    },
                    "location": "l",
                    "rate": {
                        "comment": "(1 / (((365 * 24) * 60) * 60))",
                        "exp": {
                            "left": 1,
                            "op": "/",
                            "right": 31536000
                        }
                    }
                },
                {
                    "destinations": [
                        {
                            "assignments": [
                                {
                                    "comment": "o <- 1",
                                    "ref": "o",
                                    "value": 1
                                }
                            ],
                            "location": "l",
                            "probability": {
                                "comment": "((1 / ((24 * 60) * 60)) / (1 / ((24 * 60) * 60)))",
                                "exp": {
                                    "left": {
                                        "left": 1,
                                        "op": "/",
                                        "right": 86400
                                    },
                                    "op": "/",
                                    "right": {
                                        "left": 1,
                                        "op": "/",
                                        "right": 86400
                                    }
                                }
                            }
                        }
                    ],
                    "guard": {
                        "comment": "((o = 2) & (a >= 1))",
                        "exp": {
                            "left": {
                                "left": "o",
                                "op": "=",
                                "right": 2
                            },
                            "op": "∧",
                            "right": {
                                "left": "a",
                                "op": "≥",
                                "right": 1
                            }
                        }
                    },
                    "location": "l",
                    "rate": {
                        "comment": "(1 / ((24 * 60) * 60))",
                        "exp": {
                            "left": 1,
                            "op": "/",
                            "right": 86400
                        }
                    }
                },
                {
                    "action": "output_reboot",
                    "destinations": [
                        {
                            "assignments": [
                                {
                                    "comment": "o <- 2",
                                    "ref": "o",
                                    "value": 2
                                }
                            ],
                            "location": "l",
                            "probability": {
                                "comment": "((1 / 30) / (1 / 30))",
                                "exp": {
                                    "left": {
                                        "left": 1,
                                        "op": "/",
                                        "right": 30
                                    },
                                    "op": "/",
                                    "right": {
                                        "left": 1,
                                        "op": "/",
                                        "right": 30
                                    }
                                }
                            }
                        }
                    ],
                    "guard": {
                        "comment": "((o = 1) & (a >= 1))",
                        "exp": {
                            "left": {
                                "left": "o",
                                "op": "=",
                                "right": 1
                            },
                            "op": "∧",
                            "right": {
                                "left": "a",
                                "op": "≥",
                                "right": 1
                            }
                        }
                    },
                    "location": "l",
                    "rate": {
                        "comment": "(1 / 30)",
                        "exp": {
                            "left": 1,
                            "op": "/",
                            "right": 30
                        }
                    }
                }
            ],
            "initial-locations": [
                "l"
            ],
            "locations": [
                {
                    "name": "l"
                }
            ],
            "name": "proco",
            "variables": []
        },
        {
            "edges": [
                {
                    "destinations": [
                        {
                            "assignments": [
                                {
                                    "comment": "m <- 0",
                                    "ref": "m",
                                    "value": 0
                                }
                            ],
                            "location": "l",
                            "probability": {
                                "comment": "((1 / (((365 * 24) * 60) * 60)) / (1 / (((365 * 24) * 60) * 60)))",
                                "exp": {
                                    "left": {
                                        "left": 1,
                                        "op": "/",
                                        "right": 31536000
                                    },
                                    "op": "/",
                                    "right": {
                                        "left": 1,
                                        "op": "/",
                                        "right": 31536000
                                    }
                                }
                            }
                        }
                    ],
                    "guard": {
                        "comment": "(m = 1)",
                        "exp": {
                            "left": "m",
                            "op": "=",
                            "right": 1
                        }
                    },
                    "location": "l",
                    "rate": {
                        "comment": "(1 / (((365 * 24) * 60) * 60))",
                        "exp": {
                            "left": 1,
                            "op": "/",
                            "right": 31536000
                        }
                    }
                },
                {
                    "action": "timeout",
                    "destinations": [
                        {
                            "assignments": [
                                {
                                    "comment": "count <- 0",
                                    "ref": "count",
                                    "value": 0
                                }
                            ],
                            "location": "l",
                            "probability": {
                                "comment": "((1 / 60) / (1 / 60))",
                                "exp": {
                                    "left": {
                                        "left": 1,
                                        "op": "/",
                                        "right": 60
                                    },
                                    "op": "/",
                                    "right": {
                                        "left": 1,
                                        "op": "/",
                                        "right": 60
                                    }
                                }
                            }
                        }
                    ],
                    "guard": {
                        "comment": "comp",
                        "exp": "comp"
                    },
                    "location": "l",
                    "rate": {
                        "comment": "(1 / 60)",
                        "exp": {
                            "left": 1,
                            "op": "/",
                            "right": 60
                        }
                    }
                },
                {
                    "action": "timeout",
                    "destinations": [
                        {
                            "assignments": [
                                {
                                    "comment": "count <- (min((count + 1), 9))",
                                    "ref": "count",
                                    "value": {
                                        "left": {
                                            "left": "count",
                                            "op": "+",
                                            "right": 1
                                        },
                                        "op": "min",
                                        "right": 9
                                    }
                                }
                            ],
                            "location": "l",
                            "probability": {
                                "comment": "((1 / 60) / (1 / 60))",
                                "exp": {
                                    "left": {
                                        "left": 1,
                                        "op": "/",
                                        "right": 60
                                    },
                                    "op": "/",
                                    "right": {
                                        "left": 1,
                                        "op": "/",
                                        "right": 60
                                    }
                                }
                            }
                        }
                    ],
                    "guard": {
                        "comment": "!(comp)",
                        "exp": {
                            "exp": "comp",
                            "op": "¬"
                        }
                    },
                    "location": "l",
                    "rate": {
                        "comment": "(1 / 60)",
                        "exp": {
                            "left": 1,
                            "op": "/",
                            "right": 60
                        }
                    }
                }
            ],
            "initial-locations": [
                "l"
            ],
            "locations": [
                {
                    "name": "l"
                }
            ],
            "name": "procm",
            "variables": []
        },
        {
            "edges": [
                {
                    "action": "input_reboot",
                    "destinations": [
                        {
                            "assignments": [
                                {
                                    "comment": "comp <- (comp | ((m = 1) & !(reqo)))",
                                    "ref": "comp",
                                    "value": {
                                        "left": "comp",
                                        "op": "∨",
                                        "right": {
                                            "left": {
                                                "left": "m",
                                                "op": "=",
                                                "right": 1
                                            },
                                            "op": "∧",
                                            "right": {
                                                "exp": "reqo",
                                                "op": "¬"
                                            }
                                        }
                                    }
                                },
                                {
                                    "comment": "reqi <- true",
                                    "ref": "reqi",
                                    "value": true
                                },
                                {
                                    "comment": "reqo <- (!(((o = 2) & (a >= 1))) & (reqo | (m = 1)))",
                                    "ref": "reqo",
                                    "value": {
                                        "left": {
                                            "exp": {
                                                "left": {
                                                    "left": "o",
                                                    "op": "=",
                                                    "right": 2
                                                },
                                                "op": "∧",
                                                "right": {
                                                    "left": "a",
                                                    "op": "≥",
                                                    "right": 1
                                                }
                                            },
                                            "op": "¬"
                                        },
                                        "op": "∧",
                                        "right": {
                                            "left": "reqo",
                                            "op": "∨",
                                            "right": {
                                                "left": "m",
                                                "op": "=",
                                                "right": 1
                                            }
                                        }
                                    }
                                }
                            ],
                            "location": "l",
                            "probability": {
                                "comment": "(1 / 1)",
                                "exp": 1
                            }
                        }
                    ],
                    "location": "l",
                    "rate": {
                        "comment": "1",
                        "exp": 1
                    }
                },
                {
                    "action": "output_reboot",
                    "destinations": [
                        {
                            "assignments": [
                                {
                                    "comment": "comp <- (comp | (reqi & (m = 1)))",
                                    "ref": "comp",
                                    "value": {
                                        "left": "comp",
                                        "op": "∨",
                                        "right": {
                                            "left": "reqi",
                                            "op": "∧",
                                            "right": {
                                                "left": "m",
                                                "op": "=",
                                                "right": 1
                                            }
                                        }
                                    }
                                },
                                {
                                    "comment": "reqi <- (((i = 2) & (s >= 2)) | (reqi & (m = 0)))",
                                    "ref": "reqi",
                                    "value": {
                                        "left": {
                                            "left": {
                                                "left": "i",
                                                "op": "=",
                                                "right": 2
                                            },
                                            "op": "∧",
                                            "right": {
                                                "left": "s",
                                                "op": "≥",
                                                "right": 2
                                            }
                                        },
                                        "op": "∨",
                                        "right": {
                                            "left": "reqi",
                                            "op": "∧",
                                            "right": {
                                                "left": "m",
                                                "op": "=",
                                                "right": 0
                                            }
                                        }
                                    }
                                },
                                {
                                    "comment": "reqo <- false",
                                    "ref": "reqo",
                                    "value": false
                                }
                            ],
                            "location": "l",
                            "probability": {
                                "comment": "(1 / 1)",
                                "exp": 1
                            }
                        }
                    ],
                    "location": "l",
                    "rate": {
                        "comment": "1",
                        "exp": 1
                    }
                },
                {
                    "action": "timeout",
                    "destinations": [
                        {
                            "assignments": [
                                {
                                    "comment": "comp <- ((reqi & !(reqo)) & (m = 1))",
                                    "ref": "comp",
                                    "value": {
                                        "left": {
                                            "left": "reqi",
                                            "op": "∧",
                                            "right": {
                                                "exp": "reqo",
                                                "op": "¬"
                                            }
                                        },
                                        "op": "∧",
                                        "right": {
                                            "left": "m",
                                            "op": "=",
                                            "right": 1
                                        }
                                    }
                                },
                                {
                                    "comment": "reqi <- (((i = 2) & (s >= 2)) | (reqi & (reqo | (m = 0))))",
                                    "ref": "reqi",
                                    "value": {
                                        "left": {
                                            "left": {
                                                "left": "i",
                                                "op": "=",
                                                "right": 2
                                            },
                                            "op": "∧",
                                            "right": {
                                                "left": "s",
                                                "op": "≥",
                                                "right": 2
                                            }
                                        },
                                        "op": "∨",
                                        "right": {
                                            "left": "reqi",
                                            "op": "∧",
                                            "right": {
                                                "left": "reqo",
                                                "op": "∨",
                                                "right": {
                                                    "left": "m",
                                                    "op": "=",
                                                    "right": 0
                                                }
                                            }
                                        }
                                    }
                                },
                                {
                                    "comment": "reqo <- (!(((o = 2) & (a >= 1))) & (reqo | (reqi & (m = 1))))",
                                    "ref": "reqo",
                                    "value": {
                                        "left": {
                                            "exp": {
                                                "left": {
                                                    "left": "o",
                                                    "op": "=",
                                                    "right": 2
                                                },
                                                "op": "∧",
                                                "right": {
                                                    "left": "a",
                                                    "op": "≥",
                                                    "right": 1
                                                }
                                            },
                                            "op": "¬"
                                        },
                                        "op": "∧",
                                        "right": {
                                            "left": "reqo",
                                            "op": "∨",
                                            "right": {
                                                "left": "reqi",
                                                "op": "∧",
                                                "right": {
                                                    "left": "m",
                                                    "op": "=",
                                                    "right": 1
                                                }
                                            }
                                        }
                                    }
                                }
                            ],
                            "location": "l",
                            "probability": {
                                "comment": "(1 / 1)",
                                "exp": 1
                            }
                        }
                    ],
                    "location": "l",
                    "rate": {
                        "comment": "1",
                        "exp": 1
                    }
                }
            ],
            "initial-locations": [
                "l"
            ],
            "locations": [
                {
                    "name": "l"
                }
            ],
            "name": "bus",
            "variables": [
                {
                    "initial-value": true,
                    "name": "reqi",
                    "type": "bool"
                },
                {
                    "initial-value": false,
                    "name": "reqo",
                    "type": "bool"
                }
            ]
        }
    ],
    "constants": [
        {
            "name": "MAX_COUNT",
            "type": "int",
            "value": 8
        },
        {
            "name": "MIN_SENSORS",
            "type": "int",
            "value": 2
        },
        {
            "name": "MIN_ACTUATORS",
            "type": "int",
            "value": 1
        },
        {
            "name": "T",
            "type": "real",
            "value": 12
        },
        {
            "name": "lambda_p",
            "type": "real",
            "value": {
                "left": 1,
                "op": "/",
                "right": 31536000
            }
        },
        {
            "name": "lambda_s",
            "type": "real",
            "value": {
                "left": 1,
                "op": "/",
                "right": 2592000
            }
        },
        {
            "name": "lambda_a",
            "type": "real",
            "value": {
                "left": 1,
                "op": "/",
                "right": 5184000
            }
        },
        {
            "name": "tau",
            "type": "real",
            "value": {
                "left": 1,
                "op": "/",
                "right": 60
            }
        },
        {
            "name": "delta_f",
            "type": "real",
            "value": {
                "left": 1,
                "op": "/",
                "right": 86400
            }
        },
        {
            "name": "delta_r",
            "type": "real",
            "value": {
                "left": 1,
                "op": "/",
                "right": 30
            }
        }
    ],
    "features": [
        "derived-operators",
        "functions"
    ],
    "functions": [
        {
            "body": {
                "left": {
                    "exp": {
                        "args": [
                            "danger__param__s",
                            "danger__param__i",
                            "danger__param__a",
                            "danger__param__o",
                            "danger__param__MIN_SENSORS",
                            "danger__param__MIN_ACTUATORS"
                        ],
                        "function": "down",
                        "op": "call"
                    },
                    "op": "¬"
                },
                "op": "∧",
                "right": {
                    "left": {
                        "left": "danger__param__i",
                        "op": "=",
                        "right": 1
                    },
                    "op": "∨",
                    "right": {
                        "left": "danger__param__o",
                        "op": "=",
                        "right": 1
                    }
                }
            },
            "name": "danger",
            "parameters": [
                {
                    "name": "danger__param__s",
                    "type": "int"
                },
                {
                    "name": "danger__param__i",
                    "type": "int"
                },
                {
                    "name": "danger__param__a",
                    "type": "int"
                },
                {
                    "name": "danger__param__o",
                    "type": "int"
                },
                {
                    "name": "danger__param__MIN_SENSORS",
                    "type": "int"
                },
                {
                    "name": "danger__param__MIN_ACTUATORS",
                    "type": "int"
                }
            ],
            "type": "bool"
        },
        {
            "body": {
                "left": {
                    "left": {
                        "left": "m",
                        "op": "=",
                        "right": 0
                    },
                    "op": "∨",
                    "right": {
                        "left": "count",
                        "op": "=",
                        "right": 9
                    }
                },
                "op": "∨",
                "right": {
                    "left": {
                        "left": {
                            "left": "down__param__o",
                            "op": "=",
                            "right": 2
                        },
                        "op": "∧",
                        "right": {
                            "left": "down__param__a",
                            "op": "<",
                            "right": "down__param__MIN_ACTUATORS"
                        }
                    },
                    "op": "∨",
                    "right": {
                        "left": {
                            "left": "down__param__i",
                            "op": "=",
                            "right": 2
                        },
                        "op": "∧",
                        "right": {
                            "left": "down__param__s",
                            "op": "<",
                            "right": "down__param__MIN_SENSORS"
                        }
                    }
                }
            },
            "name": "down",
            "parameters": [
                {
                    "name": "down__param__s",
                    "type": "int"
                },
                {
                    "name": "down__param__i",
                    "type": "int"
                },
                {
                    "name": "down__param__a",
                    "type": "int"
                },
                {
                    "name": "down__param__o",
                    "type": "int"
                },
                {
                    "name": "down__param__MIN_SENSORS",
                    "type": "int"
                },
                {
                    "name": "down__param__MIN_ACTUATORS",
                    "type": "int"
                }
            ],
            "type": "bool"
        },
        {
            "body": {
                "left": {
                    "exp": {
                        "args": [
                            "up__param__s",
                            "up__param__i",
                            "up__param__a",
                            "up__param__o",
                            "up__param__MIN_SENSORS",
                            "up__param__MIN_ACTUATORS"
                        ],
                        "function": "down",
                        "op": "call"
                    },
                    "op": "¬"
                },
                "op": "∧",
                "right": {
                    "exp": {
                        "args": [
                            "up__param__s",
                            "up__param__i",
                            "up__param__a",
                            "up__param__o",
                            "up__param__MIN_SENSORS",
                            "up__param__MIN_ACTUATORS"
                        ],
                        "function": "danger",
                        "op": "call"
                    },
                    "op": "¬"
                }
            },
            "name": "up",
            "parameters": [
                {
                    "name": "up__param__s",
                    "type": "int"
                },
                {
                    "name": "up__param__i",
                    "type": "int"
                },
                {
                    "name": "up__param__a",
                    "type": "int"
                },
                {
                    "name": "up__param__o",
                    "type": "int"
                },
                {
                    "name": "up__param__MIN_SENSORS",
                    "type": "int"
                },
                {
                    "name": "up__param__MIN_ACTUATORS",
                    "type": "int"
                }
            ],
            "type": "bool"
        }
    ],
    "jani-version": 1,
    "name": "model",
    "properties": [
        {
            "expression": {
                "fun": "values",
                "op": "filter",
                "states": {
                    "op": "initial"
                },
                "values": {
                    "exp": {
                        "left": {
                            "exp": "l_down",
                            "op": "¬"
                        },
                        "op": "U",
                        "right": "fail_actuators"
                    },
                    "op": "Pmin"
                }
            },
            "name": "actuators"
        }
    ],
    "restrict-initial": {
        "exp": true
    },
    "system": {
        "elements": [
            {
                "automaton": "sensors"
            },
            {
                "automaton": "proci"
            },
            {
                "automaton": "actuators"
            },
            {
                "automaton": "proco"
            },
            {
                "automaton": "procm"
            },
            {
                "automaton": "bus"
            }
        ],
        "syncs": [
            {
                "result": "input_reboot",
                "synchronise": [
                    null,
                    "input_reboot",
                    null,
                    null,
                    null,
                    "input_reboot"
                ]
            },
            {
                "result": "output_reboot",
                "synchronise": [
                    null,
                    null,
                    null,
                    "output_reboot",
                    null,
                    "output_reboot"
                ]
            },
            {
                "result": "timeout",
                "synchronise": [
                    null,
                    null,
                    null,
                    null,
                    "timeout",
                    "timeout"
                ]
            }
        ]
    },
    "type": "ctmc",
    "variables": [
        {
            "initial-value": false,
            "name": "fail_actuators",
            "transient": true,
            "type": "bool"
        },
        {
            "initial-value": false,
            "name": "l_down",
            "transient": true,
            "type": "bool"
        },
        {
            "initial-value": 3,
            "name": "s",
            "type": {
                "base": "int",
                "kind": "bounded",
                "lower-bound": 0,
                "upper-bound": 3
            }
        },
        {
            "initial-value": 2,
            "name": "i",
            "type": {
                "base": "int",
                "kind": "bounded",
                "lower-bound": 0,
                "upper-bound": 2
            }
        },
        {
            "initial-value": 2,
            "name": "a",
            "type": {
                "base": "int",
                "kind": "bounded",
                "lower-bound": 0,
                "upper-bound": 2
            }
        },
        {
            "initial-value": 2,
            "name": "o",
            "type": {
                "base": "int",
                "kind": "bounded",
                "lower-bound": 0,
                "upper-bound": 2
            }
        },
        {
            "initial-value": 1,
            "name": "m",
            "type": {
                "base": "int",
                "kind": "bounded",
                "lower-bound": 0,
                "upper-bound": 1
            }
        },
        {
            "initial-value": 0,
            "name": "count",
            "type": {
                "base": "int",
                "kind": "bounded",
                "lower-bound": 0,
                "upper-bound": 9
            }
        },
        {
            "initial-value": true,
            "name": "comp",
            "type": "bool"
        }
    ]
}