Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
ValidBlockAbstractor.h
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <functional>
5#include <memory>
6#include <vector>
7
10
12
14
15namespace storm {
16namespace utility {
17namespace solver {
18class SmtSolverFactory;
19}
20} // namespace utility
21} // namespace storm
22
23namespace storm::gbar {
24namespace abstraction {
25
26template<storm::dd::DdType DdType>
27class AbstractionInformation;
28
29template<storm::dd::DdType DdType>
31 public:
33 std::shared_ptr<storm::utility::solver::SmtSolverFactory> const& smtSolverFactory);
34
36
37 void refine(std::vector<uint64_t> const& predicates);
38
39 void constrain(storm::expressions::Expression const& constraint);
40
41 private:
45 void recomputeValidBlocks();
46
50 void recomputeValidBlocksForPredicateBlock(uint64_t blockIndex);
51
55 AbstractionInformation<DdType> const& getAbstractionInformation() const;
56
64 storm::dd::Bdd<DdType> getSourceStateBdd(storm::solver::SmtSolver::ModelReference const& model, uint64_t blockIndex) const;
65
67 std::reference_wrapper<AbstractionInformation<DdType> const> abstractionInformation;
68
70 LocalExpressionInformation<DdType> localExpressionInformation;
71
73 storm::dd::Bdd<DdType> validBlocks;
74
76 std::vector<std::unique_ptr<storm::solver::SmtSolver>> smtSolvers;
77
80 std::vector<std::vector<std::pair<storm::expressions::Variable, uint64_t>>> relevantVariablesAndPredicates;
81
83 std::vector<std::vector<storm::expressions::Variable>> decisionVariables;
84
86 std::vector<storm::dd::Bdd<DdType>> validBlocksForPredicateBlocks;
87
89 bool checkForRecomputation;
90};
91
92} // namespace abstraction
93} // namespace storm::gbar
storm::dd::Bdd< DdType > const & getValidBlocks()
void refine(std::vector< uint64_t > const &predicates)
void constrain(storm::expressions::Expression const &constraint)
The base class for all model references.
Definition SmtSolver.h:31
LabParser.cpp.
Definition cli.cpp:18