11 changed files with 90 additions and 49 deletions
-
1CMakeLists.txt
-
2lib/stormpy/expressions/__init__.py
-
3setup.py
-
8src/logic/formulae.cpp
-
21src/mod_expressions.cpp
-
2src/mod_storage.cpp
-
30src/storage/expressions.cpp
-
8src/storage/expressions.h
-
10tests/expressions/test_expressions.py
-
20tests/logic/test_formulas.py
-
34tests/storage/test_expressions.py
@ -1,2 +0,0 @@ |
|||||
from . import expressions |
|
||||
from .expressions import * |
|
@ -1,21 +0,0 @@ |
|||||
#include "common.h"
|
|
||||
#include "storm/storage/expressions/ExpressionManager.h"
|
|
||||
|
|
||||
PYBIND11_MODULE(expressions, m) { |
|
||||
m.doc() = "Storm expressions"; |
|
||||
|
|
||||
#ifdef STORMPY_DISABLE_SIGNATURE_DOC
|
|
||||
py::options options; |
|
||||
options.disable_function_signatures(); |
|
||||
#endif
|
|
||||
|
|
||||
py::class_<std::shared_ptr<storm::expressions::ExpressionManager>>(m, "ExpressionManager", "Manages variables for expressions"); |
|
||||
|
|
||||
py::class_<storm::expressions::Expression>(m, "Expression", "Holds an expression") |
|
||||
.def("__str__", &storm::expressions::Expression::toString) |
|
||||
.def_property_readonly("contains_variables", &storm::expressions::Expression::containsVariables) |
|
||||
.def_property_readonly("has_boolean_type", &storm::expressions::Expression::hasBooleanType) |
|
||||
.def_property_readonly("has_integer_type", &storm::expressions::Expression::hasIntegerType) |
|
||||
.def_property_readonly("has_rational_type", &storm::expressions::Expression::hasRationalType) |
|
||||
; |
|
||||
} |
|
@ -0,0 +1,30 @@ |
|||||
|
#include "expressions.h"
|
||||
|
#include "src/helpers.h"
|
||||
|
|
||||
|
#include "storm/storage/expressions/ExpressionManager.h"
|
||||
|
#include "storm/storage/expressions/Expression.h"
|
||||
|
|
||||
|
//Define python bindings
|
||||
|
void define_expressions(py::module& m) { |
||||
|
|
||||
|
// ExpressionManager
|
||||
|
py::class_<storm::expressions::ExpressionManager, std::shared_ptr<storm::expressions::ExpressionManager>>(m, "ExpressionManager", "Manages variables for expressions") |
||||
|
.def(py::init(), "Constructor") |
||||
|
.def("create_boolean", &storm::expressions::ExpressionManager::boolean, py::arg("boolean"), "Create expression from boolean") |
||||
|
.def("create_integer", &storm::expressions::ExpressionManager::integer, py::arg("integer"), "Create expression from integer number") |
||||
|
.def("create_rational", [](storm::expressions::ExpressionManager const& manager, storm::RationalNumber number) { |
||||
|
return manager.rational(number); |
||||
|
}, py::arg("rational"), "Create expression from rational number") |
||||
|
; |
||||
|
|
||||
|
// Expression
|
||||
|
py::class_<storm::expressions::Expression, std::shared_ptr<storm::expressions::Expression>>(m, "Expression", "Holds an expression") |
||||
|
.def("contains_variables", &storm::expressions::Expression::containsVariables, "Check if the expression contains variables.") |
||||
|
.def("is_literal", &storm::expressions::Expression::isLiteral, "Check if the expression is a literal") |
||||
|
.def("has_boolean_type", &storm::expressions::Expression::hasBooleanType, "Check if the expression is a boolean") |
||||
|
.def("has_integer_type", &storm::expressions::Expression::hasIntegerType, "Check if the expression is an integer") |
||||
|
.def("has_rational_type", &storm::expressions::Expression::hasRationalType, "Check if the expression is a rational") |
||||
|
.def("__str__", &streamToString<storm::expressions::Expression>) |
||||
|
; |
||||
|
|
||||
|
} |
@ -0,0 +1,8 @@ |
|||||
|
#ifndef PYTHON_STORAGE_EXPRESSIONS_H_ |
||||
|
#define PYTHON_STORAGE_EXPRESSIONS_H_ |
||||
|
|
||||
|
#include "common.h" |
||||
|
|
||||
|
void define_expressions(py::module& m); |
||||
|
|
||||
|
#endif /* PYTHON_STORAGE_EXPRESSIONS_H_ */ |
@ -1,10 +0,0 @@ |
|||||
import stormpy |
|
||||
from stormpy.expressions import expressions |
|
||||
|
|
||||
|
|
||||
class TestExpressions: |
|
||||
def test_expression_manager(self): |
|
||||
manager = expressions.ExpressionManager |
|
||||
|
|
||||
def test_expression(self): |
|
||||
expression = expressions.Expression |
|
@ -0,0 +1,34 @@ |
|||||
|
import stormpy |
||||
|
|
||||
|
|
||||
|
class TestExpressions: |
||||
|
def test_expression_manager(self): |
||||
|
manager = stormpy.ExpressionManager() |
||||
|
|
||||
|
def test_boolean_expression(self): |
||||
|
manager = stormpy.ExpressionManager() |
||||
|
expression = manager.create_boolean(True) |
||||
|
assert expression.is_literal() |
||||
|
assert not expression.contains_variables() |
||||
|
assert expression.has_boolean_type() |
||||
|
assert not expression.has_integer_type() |
||||
|
assert not expression.has_rational_type() |
||||
|
|
||||
|
def test_integer_expression(self): |
||||
|
manager = stormpy.ExpressionManager() |
||||
|
expression = manager.create_integer(2) |
||||
|
assert expression.is_literal() |
||||
|
assert not expression.contains_variables() |
||||
|
assert not expression.has_boolean_type() |
||||
|
assert expression.has_integer_type() |
||||
|
assert not expression.has_rational_type() |
||||
|
|
||||
|
def test_rational_expression(self): |
||||
|
import pycarl.gmp |
||||
|
manager = stormpy.ExpressionManager() |
||||
|
expression = manager.create_rational(pycarl.gmp.Rational(0.2)) |
||||
|
assert expression.is_literal() |
||||
|
assert not expression.contains_variables() |
||||
|
assert not expression.has_boolean_type() |
||||
|
assert not expression.has_integer_type() |
||||
|
assert expression.has_rational_type() |
Write
Preview
Loading…
Cancel
Save
Reference in new issue