Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
AbstractionInformation.h
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <memory>
5#include <set>
6#include <vector>
7
9
11
13
15
16namespace storm {
17namespace expressions {
19class Expression;
20class Variable;
21} // namespace expressions
22
23namespace dd {
24template<storm::dd::DdType DdType>
25class DdManager;
26}
27} // namespace storm
28
29namespace storm::gbar {
30namespace abstraction {
31
34
35 AbstractionInformationOptions(std::vector<storm::expressions::Expression> const& constraints) : constraints(constraints) {
36 // Intentionally left empty.
37 }
38
39 std::vector<storm::expressions::Expression> constraints;
40};
41
42template<storm::dd::DdType DdType>
44 public:
54 std::unique_ptr<storm::solver::SmtSolver>&& smtSolver,
56 std::shared_ptr<storm::dd::DdManager<DdType>> ddManager = std::make_shared<storm::dd::DdManager<DdType>>());
57
64
72
78 void addConstraint(storm::expressions::Expression const& constraint);
79
85 std::vector<storm::expressions::Expression> const& getConstraints() const;
86
94 uint_fast64_t getOrAddPredicate(storm::expressions::Expression const& predicate);
95
102 std::vector<uint_fast64_t> addPredicates(std::vector<storm::expressions::Expression> const& predicates);
103
110
117
124
131
137 std::shared_ptr<storm::dd::DdManager<DdType>> getDdManagerAsSharedPointer();
138
144 std::shared_ptr<storm::dd::DdManager<DdType> const> getDdManagerAsSharedPointer() const;
145
151 std::vector<storm::expressions::Expression> const& getPredicates() const;
152
156 std::vector<storm::expressions::Expression> getPredicates(storm::storage::BitVector const& predicateValuation) const;
157
162 std::vector<storm::expressions::Expression> getPredicatesExcludingBottom(storm::storage::BitVector const& predicateValuation) const;
163
169 storm::expressions::Expression const& getPredicateByIndex(uint_fast64_t index) const;
170
178
184 bool hasPredicate(storm::expressions::Expression const& predicate) const;
185
191 std::size_t getNumberOfPredicates() const;
192
198 std::set<storm::expressions::Variable> const& getAbstractedVariables() const;
199
207 void createEncodingVariables(uint64_t player1VariableCount, uint64_t player2VariableCount, uint64_t auxVariableCount);
208
216 storm::dd::Bdd<DdType> encodePlayer1Choice(uint_fast64_t index, uint_fast64_t end) const;
217
225 uint_fast64_t decodePlayer1Choice(storm::expressions::Valuation const& valuation, uint_fast64_t end) const;
226
235 storm::dd::Bdd<DdType> encodePlayer2Choice(uint_fast64_t index, uint_fast64_t start, uint_fast64_t end) const;
236
244 uint_fast64_t decodePlayer2Choice(storm::expressions::Valuation const& valuation, uint_fast64_t end) const;
245
254 storm::dd::Bdd<DdType> encodeAux(uint_fast64_t index, uint_fast64_t start, uint_fast64_t end) const;
255
264 uint_fast64_t decodeAux(storm::expressions::Valuation const& valuation, uint_fast64_t start, uint_fast64_t end) const;
265
271 std::vector<storm::expressions::Variable> const& getPlayer1Variables() const;
272
279 std::set<storm::expressions::Variable> getPlayer1VariableSet(uint_fast64_t count) const;
280
286 std::size_t getPlayer1VariableCount() const;
287
293 std::vector<storm::expressions::Variable> const& getPlayer2Variables() const;
294
300 std::size_t getPlayer2VariableCount() const;
301
308 std::set<storm::expressions::Variable> getPlayer2VariableSet(uint_fast64_t count) const;
309
315 std::vector<storm::expressions::Variable> const& getAuxVariables() const;
316
323 storm::expressions::Variable const& getAuxVariable(uint_fast64_t index) const;
324
332 std::set<storm::expressions::Variable> getAuxVariableSet(uint_fast64_t start, uint_fast64_t end) const;
333
339 std::size_t getAuxVariableCount() const;
340
346 std::set<storm::expressions::Variable> const& getSourceVariables() const;
347
353 std::set<storm::expressions::Variable> const& getSuccessorVariables() const;
354
360 std::set<storm::expressions::Variable> const& getSourcePredicateVariables() const;
361
367 std::set<storm::expressions::Variable> const& getSuccessorPredicateVariables() const;
368
375
382
388 std::map<storm::expressions::Expression, storm::dd::Bdd<DdType>> const& getPredicateToBddMap() const;
389
395 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> const& getSourceSuccessorVariablePairs() const;
396
402 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> const& getExtendedSourceSuccessorVariablePairs() const;
403
411
419 storm::dd::Bdd<DdType> getBottomStateBdd(bool source, bool negated) const;
420
427 storm::dd::Bdd<DdType> const& encodePredicateAsSource(uint_fast64_t predicateIndex) const;
428
435 storm::dd::Bdd<DdType> const& encodePredicateAsSuccessor(uint_fast64_t predicateIndex) const;
436
443 storm::dd::Bdd<DdType> const& getPredicateIdentity(uint_fast64_t predicateIndex) const;
444
451 storm::expressions::Expression const& getPredicateForDdVariableIndex(uint_fast64_t ddVariableIndex) const;
452
460 std::vector<std::pair<storm::expressions::Variable, uint_fast64_t>> declareNewVariables(
461 std::vector<std::pair<storm::expressions::Variable, uint_fast64_t>> const& oldPredicates, std::set<uint_fast64_t> const& newPredicates) const;
462
468
472 template<typename ValueType>
473 std::map<uint_fast64_t, std::pair<storm::storage::BitVector, ValueType>> decodeChoiceToUpdateSuccessorMapping(storm::dd::Bdd<DdType> const& choice) const;
474
479 template<typename ValueType>
480 std::vector<std::map<uint_fast64_t, std::pair<storm::storage::BitVector, ValueType>>> decodeChoicesToUpdateSuccessorMapping(
481 std::set<storm::expressions::Variable> const& player2Variables, storm::dd::Bdd<DdType> const& choices) const;
482
487 std::tuple<storm::storage::BitVector, uint64_t, uint64_t> decodeStatePlayer1ChoiceAndUpdate(storm::dd::Bdd<DdType> const& stateChoiceAndUpdate) const;
488
492 std::pair<std::pair<storm::expressions::Variable, storm::expressions::Variable>, uint64_t> addLocationVariables(
493 storm::expressions::Variable const& locationExpressionVariable, uint64_t highestLocationIndex);
494
498 storm::expressions::Variable getLocationVariable(uint64_t locationVariableIndex, bool source) const;
499
503 std::set<storm::expressions::Variable> const& getSourceLocationVariables() const;
504
508 std::set<storm::expressions::Variable> const& getSuccessorLocationVariables() const;
509
513 storm::expressions::Variable const& getDdLocationMetaVariable(storm::expressions::Variable const& locationExpressionVariable, bool source);
514
519
523 std::set<storm::expressions::Variable> const& getLocationExpressionVariables() const;
524
528 storm::dd::Bdd<DdType> encodeLocation(storm::expressions::Variable const& locationVariable, uint64_t locationIndex) const;
529
530 protected:
536 std::vector<storm::expressions::Variable> const& getOrderedSourcePredicateVariables() const;
537
543 std::vector<storm::expressions::Variable> const& getOrderedSuccessorPredicateVariables() const;
544
554 storm::dd::Bdd<DdType> encodeChoice(uint_fast64_t index, uint_fast64_t start, uint_fast64_t end,
555 std::vector<storm::dd::Bdd<DdType>> const& variables) const;
556
566 uint_fast64_t decodeChoice(storm::expressions::Valuation const& valuation, uint_fast64_t start, uint_fast64_t end,
567 std::vector<storm::expressions::Variable> const& variables) const;
568
569 // The expression related data.
570
572 std::reference_wrapper<storm::expressions::ExpressionManager> expressionManager;
573
575 std::unordered_map<storm::expressions::Expression, uint64_t> predicateToIndexMap;
576
579
581 std::vector<storm::expressions::Expression> predicates;
582
584 std::set<storm::expressions::Variable> abstractedVariables;
585
587 std::vector<storm::expressions::Expression> constraints;
588
589 // The DD-related data.
590
592 std::shared_ptr<storm::dd::DdManager<DdType>> ddManager;
593
595 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> predicateDdVariables;
596
598 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> extendedPredicateDdVariables;
599
601 std::set<storm::expressions::Variable> sourceVariables;
602
604 std::set<storm::expressions::Variable> successorVariables;
605
607 std::set<storm::expressions::Variable> sourcePredicateVariables;
608
610 std::set<storm::expressions::Variable> successorPredicateVariables;
611
613 std::vector<storm::expressions::Variable> orderedSourcePredicateVariables;
614
616 std::vector<storm::expressions::Variable> orderedSuccessorPredicateVariables;
617
619 std::vector<std::pair<storm::dd::Bdd<DdType>, storm::dd::Bdd<DdType>>> predicateBdds;
620
622 std::vector<storm::dd::Bdd<DdType>> predicateIdentities;
623
626
629
631 std::pair<storm::expressions::Variable, storm::expressions::Variable> bottomStateVariables;
632
634 std::pair<storm::dd::Bdd<DdType>, storm::dd::Bdd<DdType>> bottomStateBdds;
635
637 std::unordered_map<uint_fast64_t, uint_fast64_t> ddVariableIndexToPredicateIndexMap;
638
640 std::vector<storm::expressions::Variable> player1Variables;
641
643 std::vector<storm::dd::Bdd<DdType>> player1VariableBdds;
644
646 std::vector<storm::expressions::Variable> player2Variables;
647
649 std::vector<storm::dd::Bdd<DdType>> player2VariableBdds;
650
652 std::vector<storm::expressions::Variable> auxVariables;
653
655 std::vector<storm::dd::Bdd<DdType>> auxVariableBdds;
656
658 std::map<storm::expressions::Expression, storm::dd::Bdd<DdType>> expressionToBddMap;
659
661 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> locationVariablePairs;
662
664 std::map<storm::expressions::Variable, std::pair<storm::expressions::Variable, storm::expressions::Variable>> locationExpressionToDdVariableMap;
665
667 std::set<storm::expressions::Variable> locationExpressionVariables;
668
669 // All source location variables.
670 std::set<storm::expressions::Variable> allSourceLocationVariables;
671
672 // All successor location variables.
673 std::set<storm::expressions::Variable> allSuccessorLocationVariables;
674};
675
676} // namespace abstraction
677} // namespace storm::gbar
This class is responsible for managing a set of typed variables and all expressions using these varia...
The base class of all valuations of variables.
Definition Valuation.h:16
std::vector< std::pair< storm::expressions::Variable, storm::expressions::Variable > > predicateDdVariables
The DD variables corresponding to the predicates.
std::vector< storm::expressions::Variable > orderedSourcePredicateVariables
An ordered collection of the source variables.
std::vector< std::pair< storm::dd::Bdd< DdType >, storm::dd::Bdd< DdType > > > predicateBdds
The BDDs corresponding to the predicates.
std::set< storm::expressions::Variable > const & getSourceLocationVariables() const
Retrieves the source location variables.
storm::dd::Bdd< DdType > allPredicateIdentities
A BDD that represents the identity of all predicate variables.
storm::dd::Bdd< DdType > getPredicateSourceVariable(storm::expressions::Expression const &predicate) const
Retrieves the source variable associated with the given predicate.
storm::dd::Bdd< DdType > encodePlayer1Choice(uint_fast64_t index, uint_fast64_t end) const
Encodes the given index using the indicated player 1 variables.
std::size_t getPlayer2VariableCount() const
Retrieves the number of player 2 variables.
std::map< storm::expressions::Expression, storm::dd::Bdd< DdType > > const & getPredicateToBddMap() const
Retrieves a mapping of the known predicates to the BDDs that represent the corresponding states.
std::set< storm::expressions::Variable > getPlayer1VariableSet(uint_fast64_t count) const
Retrieves the set of player 1 variables.
storm::dd::Bdd< DdType > const & encodePredicateAsSource(uint_fast64_t predicateIndex) const
Retrieves the BDD for the predicate with the given index over the source variables.
std::vector< storm::expressions::Variable > const & getPlayer2Variables() const
Retrieves the meta variables associated with the player 2 choices.
storm::expressions::Variable const & getDdLocationMetaVariable(storm::expressions::Variable const &locationExpressionVariable, bool source)
Retrieves the DD variable for the given location expression variable.
uint_fast64_t decodeChoice(storm::expressions::Valuation const &valuation, uint_fast64_t start, uint_fast64_t end, std::vector< storm::expressions::Variable > const &variables) const
Decodes the index encoded in the valuation using the given variables.
std::vector< storm::expressions::Expression > const & getConstraints() const
Retrieves a list of expressions that constrain the valid variable values.
std::set< storm::expressions::Variable > abstractedVariables
The set of all abstracted variables.
void addExpressionVariable(storm::expressions::Variable const &variable)
Adds the given variable.
std::vector< storm::expressions::Variable > auxVariables
Variables that can be used to encode auxiliary information.
std::vector< std::map< uint_fast64_t, std::pair< storm::storage::BitVector, ValueType > > > decodeChoicesToUpdateSuccessorMapping(std::set< storm::expressions::Variable > const &player2Variables, storm::dd::Bdd< DdType > const &choices) const
Decodes the choices in the form of BDD over the destination variables where the choices are distingui...
std::set< storm::expressions::Variable > successorPredicateVariables
The set of all successor predicate variables.
storm::dd::Bdd< DdType > encodeChoice(uint_fast64_t index, uint_fast64_t start, uint_fast64_t end, std::vector< storm::dd::Bdd< DdType > > const &variables) const
Encodes the given index with the given number of variables from the given variables.
std::set< storm::expressions::Variable > successorVariables
The set of all successor variables.
std::set< storm::expressions::Variable > allSuccessorLocationVariables
std::vector< storm::expressions::Variable > const & getAuxVariables() const
Retrieves the meta variables associated with auxiliary information.
bool hasPredicate(storm::expressions::Expression const &predicate) const
Determines whether the given predicate is in the set of known predicates.
storm::expressions::ExpressionManager & getExpressionManager()
Retrieves the expression manager.
std::vector< std::pair< storm::expressions::Variable, storm::expressions::Variable > > extendedPredicateDdVariables
The DD variables corresponding to the predicates together with the DD variables marking the bottom st...
std::vector< std::pair< storm::expressions::Variable, storm::expressions::Variable > > const & getSourceSuccessorVariablePairs() const
Retrieves the meta variables pairs for all predicates.
storm::dd::Bdd< DdType > encodeLocation(storm::expressions::Variable const &locationVariable, uint64_t locationIndex) const
Encodes the given location index as either source or successor.
std::vector< std::pair< storm::expressions::Variable, storm::expressions::Variable > > const & getExtendedSourceSuccessorVariablePairs() const
Retrieves the meta variables pairs for all predicates together with the meta variables marking the bo...
std::set< storm::expressions::Variable > allSourceLocationVariables
std::set< storm::expressions::Variable > sourceVariables
The set of all source variables.
std::vector< storm::expressions::Variable > player1Variables
Variables that encode the choices of player 1.
storm::dd::Bdd< DdType > const & getPredicateIdentity(uint_fast64_t predicateIndex) const
Retrieves a BDD representing the identity for the predicate with the given index.
std::size_t getAuxVariableCount() const
Retrieves the number of auxiliary variables.
std::size_t getPlayer1VariableCount() const
Retrieves the number of player 1 variables.
storm::expressions::EquivalenceChecker equivalenceChecker
An object that can detect equivalence of predicates.
storm::dd::Bdd< DdType > const & getAllPredicateIdentities() const
Retrieves a BDD representing the identities of all predicates.
std::set< storm::expressions::Variable > getAuxVariableSet(uint_fast64_t start, uint_fast64_t end) const
Retrieves the requested set of auxiliary variables.
std::vector< storm::dd::Bdd< DdType > > auxVariableBdds
The BDDs associated with the meta variables encoding auxiliary information.
std::vector< storm::expressions::Variable > const & getPlayer1Variables() const
Retrieves the meta variables associated with the player 1 choices.
storm::storage::BitVector decodeState(storm::dd::Bdd< DdType > const &state) const
Decodes the given state (given as a BDD over the source variables) into a a bit vector indicating the...
storm::dd::Bdd< DdType > allLocationIdentities
A BDD that represents the identity of all location variables.
std::pair< storm::dd::Bdd< DdType >, storm::dd::Bdd< DdType > > bottomStateBdds
The BDDs associated with the bottom state variable pair.
std::set< storm::expressions::Variable > const & getSuccessorLocationVariables() const
Retrieves the source location variables.
std::pair< storm::expressions::Variable, storm::expressions::Variable > bottomStateVariables
A meta variable pair that marks bottom states.
uint64_t getNumberOfDdSourceLocationVariables() const
Retrieves the number of DD variables associated with the source location variables.
std::shared_ptr< storm::dd::DdManager< DdType > > ddManager
The manager responsible for the DDs.
std::vector< storm::dd::Bdd< DdType > > predicateIdentities
The BDDs representing the predicate identities (i.e. source and successor variable have the same trut...
std::vector< storm::expressions::Expression > getPredicatesExcludingBottom(storm::storage::BitVector const &predicateValuation) const
Retrieves a list of expression that corresponds to the given predicate valuation that mentions all of...
std::map< storm::expressions::Expression, storm::dd::Bdd< DdType > > expressionToBddMap
A mapping from expressions to the corresponding BDDs.
std::vector< storm::expressions::Expression > predicates
The current set of predicates used in the abstraction.
std::unordered_map< uint_fast64_t, uint_fast64_t > ddVariableIndexToPredicateIndexMap
A mapping from DD variable indices to the predicate index they represent.
std::vector< storm::expressions::Variable > player2Variables
Variables that encode the choices of player 2.
void addConstraint(storm::expressions::Expression const &constraint)
Adds an expression that constrains the legal variable values.
std::vector< storm::expressions::Variable > orderedSuccessorPredicateVariables
An ordered collection of the successor variables.
std::vector< storm::expressions::Expression > const & getPredicates() const
Retrieves all currently known predicates.
std::vector< storm::expressions::Expression > constraints
The expressions characterizing legal variable values.
std::vector< std::pair< storm::expressions::Variable, uint_fast64_t > > declareNewVariables(std::vector< std::pair< storm::expressions::Variable, uint_fast64_t > > const &oldPredicates, std::set< uint_fast64_t > const &newPredicates) const
Declares new variables for the missing predicates.
std::vector< std::pair< storm::expressions::Variable, storm::expressions::Variable > > locationVariablePairs
The location variable pairs (source/successor).
storm::expressions::Variable getLocationVariable(uint64_t locationVariableIndex, bool source) const
Retrieves the location variable with the given index as either source or successor.
std::set< storm::expressions::Variable > const & getSuccessorPredicateVariables() const
Retrieves the set of successor predicate meta variables.
std::set< storm::expressions::Variable > const & getSourceVariables() const
Retrieves the set of source meta variables.
uint_fast64_t decodePlayer2Choice(storm::expressions::Valuation const &valuation, uint_fast64_t end) const
Decodes the player 2 choice in the given valuation.
storm::expressions::Variable const & getAuxVariable(uint_fast64_t index) const
Retrieves the auxiliary variable with the given index.
uint_fast64_t decodePlayer1Choice(storm::expressions::Valuation const &valuation, uint_fast64_t end) const
Decodes the player 1 choice in the given valuation.
std::set< storm::expressions::Variable > sourcePredicateVariables
The set of all source predicate variables.
uint_fast64_t decodeAux(storm::expressions::Valuation const &valuation, uint_fast64_t start, uint_fast64_t end) const
Decodes the auxiliary index in the given valuation.
void createEncodingVariables(uint64_t player1VariableCount, uint64_t player2VariableCount, uint64_t auxVariableCount)
Creates the given number of variables used to encode the choices of player 1/2 and auxiliary informat...
std::size_t getNumberOfPredicates() const
Retrieves the number of predicates.
std::pair< std::pair< storm::expressions::Variable, storm::expressions::Variable >, uint64_t > addLocationVariables(storm::expressions::Variable const &locationExpressionVariable, uint64_t highestLocationIndex)
Adds a location variable of appropriate range and returns the pair of meta variables.
std::tuple< storm::storage::BitVector, uint64_t, uint64_t > decodeStatePlayer1ChoiceAndUpdate(storm::dd::Bdd< DdType > const &stateChoiceAndUpdate) const
Decodes the given BDD (over source, player 1 and aux variables) into a bit vector indicating the trut...
std::vector< storm::expressions::Variable > const & getOrderedSourcePredicateVariables() const
Retrieves the ordered collection of source predicate meta variables.
std::vector< storm::expressions::Variable > const & getOrderedSuccessorPredicateVariables() const
Retrieves the ordered collection of successor predicate meta variables.
storm::expressions::Variable const & getBottomStateVariable(bool source) const
Retrieves the meta variable marking the bottom states.
std::set< storm::expressions::Variable > getPlayer2VariableSet(uint_fast64_t count) const
Retrieves the set of player 2 variables.
storm::dd::Bdd< DdType > encodeAux(uint_fast64_t index, uint_fast64_t start, uint_fast64_t end) const
Encodes the given index using the indicated auxiliary variables.
storm::expressions::Expression const & getPredicateForDdVariableIndex(uint_fast64_t ddVariableIndex) const
Retrieves the predicate associated with the given DD variable index.
storm::dd::Bdd< DdType > const & encodePredicateAsSuccessor(uint_fast64_t predicateIndex) const
Retrieves the BDD for the predicate with the given index over the successor variables.
std::reference_wrapper< storm::expressions::ExpressionManager > expressionManager
The manager responsible for the expressions of the program and the SMT solvers.
std::vector< storm::dd::Bdd< DdType > > player2VariableBdds
The BDDs associated with the meta variables of player 2.
std::set< storm::expressions::Variable > const & getSuccessorVariables() const
Retrieves the set of successor meta variables.
std::vector< storm::dd::Bdd< DdType > > player1VariableBdds
The BDDs associated with the meta variables of player 1.
storm::dd::DdManager< DdType > & getDdManager()
Retrieves the DD manager.
std::set< storm::expressions::Variable > const & getSourcePredicateVariables() const
Retrieves the set of source predicate meta variables.
std::set< storm::expressions::Variable > const & getLocationExpressionVariables() const
Retrieves the source location variables.
storm::expressions::Expression const & getPredicateByIndex(uint_fast64_t index) const
Retrieves the predicate with the given index.
uint_fast64_t getOrAddPredicate(storm::expressions::Expression const &predicate)
Gets the index of a predicate that is equivalent to the provided one.
std::shared_ptr< storm::dd::DdManager< DdType > > getDdManagerAsSharedPointer()
Retrieves the shared pointer to the DD manager.
storm::dd::Bdd< DdType > getBottomStateBdd(bool source, bool negated) const
Retrieves the BDD that can be used to mark the bottom states.
std::unordered_map< storm::expressions::Expression, uint64_t > predicateToIndexMap
A mapping from predicates to their indices in the predicate list.
std::vector< uint_fast64_t > addPredicates(std::vector< storm::expressions::Expression > const &predicates)
Adds the given predicates.
std::map< storm::expressions::Variable, std::pair< storm::expressions::Variable, storm::expressions::Variable > > locationExpressionToDdVariableMap
A mapping from location expression variables to their source/successor counterparts.
storm::dd::Bdd< DdType > const & getAllLocationIdentities() const
Retrieves a BDD representing the identities of all location variables.
std::set< storm::expressions::Variable > const & getAbstractedVariables() const
Retrieves all currently known variables.
std::map< uint_fast64_t, std::pair< storm::storage::BitVector, ValueType > > decodeChoiceToUpdateSuccessorMapping(storm::dd::Bdd< DdType > const &choice) const
Decodes the choice in the form of a BDD over the destination variables.
std::set< storm::expressions::Variable > locationExpressionVariables
The set of all location expression variables.
storm::dd::Bdd< DdType > encodePlayer2Choice(uint_fast64_t index, uint_fast64_t start, uint_fast64_t end) const
Encodes the given index using the indicated player 2 variables.
A bit vector that is internally represented as a vector of 64-bit values.
Definition BitVector.h:18
LabParser.cpp.
Definition cli.cpp:18
std::vector< storm::expressions::Expression > constraints
AbstractionInformationOptions(std::vector< storm::expressions::Expression > const &constraints)