.def("contains_variables",&storm::expressions::Expression::containsVariables,"Check if the expression contains variables.")
.def("contains_variable",&storm::expressions::Expression::containsVariable,"Check if the expression contains any of the given variables.",py::arg("variables"))
.def("get_variables",&storm::expressions::Expression::getVariables,"Get the variables")
.def("is_literal",&storm::expressions::Expression::isLiteral,"Check if the expression is a literal")
.def("is_variable",&storm::expressions::Expression::isVariable,"Check if the expression is a variable")
.def("identifier",&storm::expressions::Expression::getIdentifier,"Retrieves the identifier associated with this expression if this expression is a variable")
.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_property_readonly("type",&storm::expressions::Expression::getType,"Get the Type")
.def_property_readonly("manager",&storm::expressions::Expression::getManager,"Get the manager")
.def_property_readonly("is_function_application",&storm::expressions::Expression::isFunctionApplication,"True iff the expression is a function application (of any sort")
.def_property_readonly("operator",&storm::expressions::Expression::getOperator,"The operator of the expression (if it is a function application)")
.def_property_readonly("arity",&storm::expressions::Expression::getArity,"The arity of the expression")
.def_property_readonly("initial_value_expression",&Variable::getInitialValueExpression,"The expression represented the initial value of the variable")
;
py::class_<IntegerVariable,std::shared_ptr<IntegerVariable>>integer_variable(m,"Prism_Integer_Variable",variable,"A program integer variable in a Prism program");
integer_variable.def_property_readonly("lower_bound_expression",&IntegerVariable::getLowerBoundExpression,"The the lower bound expression of this integer variable")
.def_property_readonly("upper_bound_expression",&IntegerVariable::getUpperBoundExpression,"The the upper bound expression of this integer variable")
;
py::class_<BooleanVariable,std::shared_ptr<BooleanVariable>>boolean_variable(m,"Prism_Boolean_Variable",variable,"A program boolean variable in a Prism program");
xxxxxxxxxx