64 std::tuple<std::shared_ptr<Order>, uint_fast64_t, uint_fast64_t>
extendOrder(std::shared_ptr<Order> order,
67 std::shared_ptr<expressions::BinaryRelationExpression> assumption =
nullptr);
69 void setMinMaxValues(std::shared_ptr<Order> order, std::vector<ConstantType>& minValues, std::vector<ConstantType>& maxValues);
70 void setMinValues(std::shared_ptr<Order> order, std::vector<ConstantType>& minValues);
71 void setMaxValues(std::shared_ptr<Order> order, std::vector<ConstantType>& maxValues);
75 void setUnknownStates(std::shared_ptr<Order> order, uint_fast64_t state1, uint_fast64_t state2);
77 std::pair<uint_fast64_t, uint_fast64_t>
getUnknownStates(std::shared_ptr<Order> order)
const;
78 void setUnknownStates(std::shared_ptr<Order> orderOriginal, std::shared_ptr<Order> orderCopy);
79 void copyMinMax(std::shared_ptr<Order> orderOriginal, std::shared_ptr<Order> orderCopy);
84 bool isHope(std::shared_ptr<Order> order);
90 Order::NodeComparison addStatesBasedOnMinMax(std::shared_ptr<Order> order, uint_fast64_t state1, uint_fast64_t state2)
const;
91 std::tuple<std::shared_ptr<Order>, uint_fast64_t, uint_fast64_t>
extendOrder(std::shared_ptr<Order> order,
93 std::shared_ptr<expressions::BinaryRelationExpression> assumption =
nullptr);
94 std::pair<uint_fast64_t, uint_fast64_t> extendNormal(std::shared_ptr<Order> order, uint_fast64_t currentState, std::vector<uint_fast64_t>
const& successors,
96 std::pair<uint_fast64_t, uint_fast64_t> extendByBackwardReasoning(std::shared_ptr<Order> order, uint_fast64_t currentState,
97 std::vector<uint_fast64_t>
const& successors,
bool allowMerge);
98 std::pair<uint_fast64_t, uint_fast64_t> extendByForwardReasoning(std::shared_ptr<Order> order, uint_fast64_t currentState,
99 std::vector<uint_fast64_t>
const& successors,
bool allowMerge);
100 bool extendByAssumption(std::shared_ptr<Order> order, uint_fast64_t state1, uint_fast64_t state2);
102 void handleOneSuccessor(std::shared_ptr<Order> order, uint_fast64_t currentState, uint_fast64_t successor);
103 void handleAssumption(std::shared_ptr<Order> order, std::shared_ptr<expressions::BinaryRelationExpression> assumption)
const;
105 std::pair<uint_fast64_t, bool> getNextState(std::shared_ptr<Order> order, uint_fast64_t stateNumber,
bool done);
106 std::shared_ptr<Order> getBottomTopOrder();
108 std::shared_ptr<Order> bottomTopOrder =
nullptr;
110 std::map<std::shared_ptr<Order>, std::vector<ConstantType>> minValues;
111 boost::optional<std::vector<ConstantType>> minValuesInit;
112 boost::optional<std::vector<ConstantType>> maxValuesInit;
113 std::map<std::shared_ptr<Order>, std::vector<ConstantType>> maxValues;
116 std::shared_ptr<models::sparse::Model<ValueType>> model;
118 std::map<uint_fast64_t, std::vector<uint_fast64_t>> stateMap;
119 std::map<std::shared_ptr<Order>, std::pair<uint_fast64_t, uint_fast64_t>> unknownStatesMap;
121 std::map<std::shared_ptr<Order>,
bool> usePLA;
122 std::map<std::shared_ptr<Order>,
bool> continueExtending;
125 std::shared_ptr<logic::Formula const> formula;
129 uint_fast64_t numberOfStates;
133 boost::container::flat_set<uint_fast64_t> nonParametricStates;
135 std::map<VariableType, std::vector<uint_fast64_t>> occuringStatesAtVariable;
136 std::vector<std::set<VariableType>> occuringVariablesAtState;
std::tuple< std::shared_ptr< Order >, uint_fast64_t, uint_fast64_t > extendOrder(std::shared_ptr< Order > order, storm::storage::ParameterRegion< ValueType > region, std::shared_ptr< MonotonicityResult< VariableType > > monRes=nullptr, std::shared_ptr< expressions::BinaryRelationExpression > assumption=nullptr)
Extends the order for the given region.