3#include <boost/variant.hpp>
27 Replacement const&
at(std::vector<std::size_t>
const& indices)
const;
29 std::size_t
size()
const;
30 void grow(std::size_t
const& minimumSize);
33 boost::variant<storm::jani::Variable const*, std::vector<Replacement>> data;
36 std::unordered_map<storm::expressions::Variable, Replacement>
replacements;
Replacement const & at(std::size_t const &index) const
std::vector< Replacement > const & getReplacements() const
storm::jani::Variable const & getVariable() const
std::size_t size() const
equivalent to .at(i_1).at(i_2). ... .at(i_n) if indices = {i_1,i_2, ... i_n}
void grow(std::size_t const &minimumSize)
assumes this is not a variable
ArrayEliminatorData eliminate(Model &model, bool keepNonTrivialArrayAccess=false)
Eliminates all array references in the given model by replacing them with basic variables.
ArrayEliminator()=default
storm::expressions::Expression transformExpression(storm::expressions::Expression const &arrayExpression) const
std::unordered_map< storm::expressions::Variable, Replacement > replacements
void transformProperty(storm::jani::Property &property) const
std::vector< std::shared_ptr< Variable > > eliminatedArrayVariables