From 76cabb828710f73b1a33251f477d63890cbd7e92 Mon Sep 17 00:00:00 2001 From: TimQu Date: Fri, 26 Apr 2019 12:18:42 +0200 Subject: [PATCH] geometry: Fixed a merge issue. --- src/storm/storage/geometry/NativePolytope.h | 2 ++ src/storm/storage/geometry/Polytope.h | 30 ++++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/storm/storage/geometry/NativePolytope.h b/src/storm/storage/geometry/NativePolytope.h index abf147bda..324d5b1fb 100644 --- a/src/storm/storage/geometry/NativePolytope.h +++ b/src/storm/storage/geometry/NativePolytope.h @@ -1,8 +1,10 @@ #ifndef STORM_STORAGE_GEOMETRY_NATIVEPOLYTOPE_H_ #define STORM_STORAGE_GEOMETRY_NATIVEPOLYTOPE_H_ +#include #include "storm/storage/geometry/Polytope.h" #include "storm/adapters/EigenAdapter.h" +#include "storm/storage/expressions/Expression.h" namespace storm { namespace storage { diff --git a/src/storm/storage/geometry/Polytope.h b/src/storm/storage/geometry/Polytope.h index 590057215..daef5aa7e 100644 --- a/src/storm/storage/geometry/Polytope.h +++ b/src/storm/storage/geometry/Polytope.h @@ -6,6 +6,8 @@ #include #include "storm/storage/geometry/Halfspace.h" +#include "storm/storage/BitVector.h" +#include "storm/storage/expressions/Expressions.h" namespace storm { namespace storage { @@ -43,10 +45,17 @@ namespace storm { /*! * Creates the downward closure of the given points (i.e., the set { x | ex. y \in conv(points) : x<=y } - * If the vector of points is empty, the resulting polytope be empty. + * If the vector of points is empty, the resulting polytope is empty. */ static std::shared_ptr> createDownwardClosure(std::vector const& points); + /*! + * Creates the downward closure of the given points but only with respect to the selected dimensions, + * (i.e., the set { x | ex. y \in conv(points) : (x_i<=y_i if i in selectedDim) and (x_i==y_i if i not in selectedDim } + * If the vector of points is empty, the resulting polytope is empty. + */ + static std::shared_ptr> createSelectiveDownwardClosure(std::vector const& points, storm::storage::BitVector const& selectedDimensions); + /*! * Returns the vertices of this polytope. */ @@ -108,6 +117,13 @@ namespace storm { */ virtual std::shared_ptr> affineTransformation(std::vector const& matrix, Point const& vector) const = 0; + /*! + * Returns the Polytope described by the set {x+b | x \in this} + * + * @param b the transformation offset + */ + std::shared_ptr> shift(Point const& b) const; + /*! * Returns the downward closure of this, i.e., the set { x | ex. y \in P : x<=y} where P is this Polytope. */ @@ -130,6 +146,18 @@ namespace storm { */ virtual std::pair optimize(Point const& direction) const = 0; + /*! + * Declares one variable for each dimension and returns the obtained variables. + * @param manager The expression manager that keeps track of the variables + * @param namePrefix The prefix that is prepanded to the variable index + */ + virtual std::vector declareVariables(storm::expressions::ExpressionManager& manager, std::string const& namePrefix) const; + + /*! + * Returns the constrains defined by this polytope as an expression over the given variables + */ + virtual std::vector getConstraints(storm::expressions::ExpressionManager const& manager, std::vector const& variables) const; + /*! * converts the intern number representation of the polytope to the given target type */