Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
parametric.cpp
Go to the documentation of this file.
1#include <string>
2
9
10namespace storm {
11namespace utility {
12namespace parametric {
13
14#ifdef STORM_HAVE_CARL
15template<>
16typename CoefficientType<storm::RationalFunction>::type evaluate<storm::RationalFunction>(storm::RationalFunction const& function,
17 Valuation<storm::RationalFunction> const& valuation) {
18 return function.evaluate(valuation);
19}
20
21template<>
22typename storm::RationalFunction substitute<storm::RationalFunction>(storm::RationalFunction const& function,
23 Valuation<storm::RationalFunction> const& valuation) {
24 return function.substitute(valuation);
25}
26
27template<>
28void gatherOccurringVariables<storm::RationalFunction>(storm::RationalFunction const& function,
29 std::set<typename VariableType<storm::RationalFunction>::type>& variableSet) {
30 function.gatherVariables(variableSet);
31}
32
33template<>
34bool isLinear<storm::RationalFunction>(storm::RationalFunction const& function) {
35 return storm::utility::isConstant(function.denominator()) && function.nominator().isLinear();
36}
37
38template<>
39bool isMultiLinearPolynomial<storm::RationalFunction>(storm::RationalFunction const& function) {
40 if (!storm::utility::isConstant(function.denominator())) {
41 return false;
42 }
43 auto varInfos = function.nominator().getVarInfo<false>();
44 for (auto const& varInfo : varInfos) {
45 if (varInfo.second.maxDegree() > 1) {
46 return false;
47 }
48 }
49 return true;
50}
51#endif
52} // namespace parametric
53} // namespace utility
54} // namespace storm
std::map< typename VariableType< FunctionType >::type, typename CoefficientType< FunctionType >::type > Valuation
Definition parametric.h:41
bool isConstant(ValueType const &)
Definition constants.cpp:66
LabParser.cpp.
Definition cli.cpp:18