|
|
@ -37,7 +37,44 @@ namespace storm { |
|
|
|
void convert(); |
|
|
|
void toFile(std::string const&); |
|
|
|
|
|
|
|
/** |
|
|
|
* Generates a new solver instance and prepares it for SMT checking of the DFT. Needs to be called before all queries to the solver |
|
|
|
*/ |
|
|
|
void toSolver(); |
|
|
|
|
|
|
|
/** |
|
|
|
* Check if the TLE of the DFT never fails |
|
|
|
* |
|
|
|
* @return "Sat" if TLE never fails, "Unsat" if it does, otherwise "Unknown" |
|
|
|
*/ |
|
|
|
storm::solver::SmtSolver::CheckResult checkTleNeverFailedQuery(); |
|
|
|
|
|
|
|
/** |
|
|
|
* Check if there exists a sequence of BE failures of given length such that the TLE of the DFT fails |
|
|
|
* |
|
|
|
* @param bound the length of the sequene |
|
|
|
* @return "Sat" if such a sequence exists, "Unsat" if it does not, otherwise "Unknown" |
|
|
|
*/ |
|
|
|
storm::solver::SmtSolver::CheckResult checkTleFailsWithLeq(uint64_t bound); |
|
|
|
|
|
|
|
/** |
|
|
|
* Get the minimal number of BEs necessary for the TLE to fail |
|
|
|
* |
|
|
|
* @return the minimal number |
|
|
|
*/ |
|
|
|
uint64_t getLeastFailureBound(); |
|
|
|
|
|
|
|
/** |
|
|
|
* Set the timeout of the solver |
|
|
|
* |
|
|
|
* @param milliseconds the timeout in milliseconds |
|
|
|
*/ |
|
|
|
void setSolverTimeout(uint_fast64_t milliseconds); |
|
|
|
|
|
|
|
/** |
|
|
|
* Unset the timeout for the solver |
|
|
|
*/ |
|
|
|
void unsetSolverTimeout(); |
|
|
|
|
|
|
|
private: |
|
|
|
uint64_t getClaimVariableIndex(uint64_t spareIndex, uint64_t childIndex) const; |
|
|
@ -72,7 +109,6 @@ namespace storm { |
|
|
|
|
|
|
|
/** |
|
|
|
* Add constraints encoding VOT gates. |
|
|
|
|
|
|
|
*/ |
|
|
|
void generateVotConstraint(size_t i, std::vector<uint64_t> childVarIndices, |
|
|
|
std::shared_ptr<storm::storage::DFTElement<ValueType> const> element); |
|
|
@ -107,7 +143,7 @@ namespace storm { |
|
|
|
/** |
|
|
|
* Add constraints encoding claiming rules. |
|
|
|
* This corresponds to constraint (8) and addition |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
void addClaimingConstraints(); |
|
|
|
|
|
|
|
/** |
|
|
@ -115,16 +151,9 @@ namespace storm { |
|
|
|
* This corresponds to constraints (9), (10) and (11) |
|
|
|
*/ |
|
|
|
void addMarkovianConstraints(); |
|
|
|
|
|
|
|
/** |
|
|
|
* Check if the TLE of the DFT never fails |
|
|
|
* |
|
|
|
* @return "Sat" if TLE never fails, "Unsat" if it does, otherwise "Unknown" |
|
|
|
*/ |
|
|
|
storm::solver::SmtSolver::CheckResult checkTleNeverFailedQuery(); |
|
|
|
|
|
|
|
storm::storage::DFT<ValueType> const& dft; |
|
|
|
std::shared_ptr<storm::solver::SmtSolver> solver = 0; |
|
|
|
std::shared_ptr<storm::solver::SmtSolver> solver = NULL; |
|
|
|
std::vector<std::string> varNames; |
|
|
|
std::unordered_map<uint64_t, uint64_t> timePointVariables; |
|
|
|
std::vector<std::shared_ptr<SmtConstraint>> constraints; |
|
|
|