|
@ -28,7 +28,7 @@ |
|
|
#include "storm-parsers/api/storm-parsers.h"
|
|
|
#include "storm-parsers/api/storm-parsers.h"
|
|
|
|
|
|
|
|
|
// TODO: extend for cases in which checkOnSamples and validateAssumption return true
|
|
|
// TODO: extend for cases in which checkOnSamples and validateAssumption return true
|
|
|
TEST(AssumptionCheckerTest, Brp) { |
|
|
|
|
|
|
|
|
TEST(AssumptionCheckerTest, Brp_no_bisimulation) { |
|
|
std::string programFile = STORM_TEST_RESOURCES_DIR "/pdtmc/brp16_2.pm"; |
|
|
std::string programFile = STORM_TEST_RESOURCES_DIR "/pdtmc/brp16_2.pm"; |
|
|
std::string formulaAsString = "P=? [F s=4 & i=N ]"; |
|
|
std::string formulaAsString = "P=? [F s=4 & i=N ]"; |
|
|
std::string constantsAsString = ""; //e.g. pL=0.9,TOACK=0.5
|
|
|
std::string constantsAsString = ""; //e.g. pL=0.9,TOACK=0.5
|
|
@ -62,9 +62,29 @@ TEST(AssumptionCheckerTest, Brp) { |
|
|
storm::expressions::BinaryRelationExpression::RelationType::GreaterOrEqual)); |
|
|
storm::expressions::BinaryRelationExpression::RelationType::GreaterOrEqual)); |
|
|
EXPECT_TRUE(checker.checkOnSamples(assumption)); |
|
|
EXPECT_TRUE(checker.checkOnSamples(assumption)); |
|
|
|
|
|
|
|
|
auto emptyLattice = new storm::analysis::Lattice(storm::storage::BitVector(8), storm::storage::BitVector(8), 8); |
|
|
|
|
|
// Validate assumptions
|
|
|
|
|
|
EXPECT_FALSE(checker.validateAssumption(assumption, emptyLattice)); |
|
|
|
|
|
|
|
|
auto dummyLattice = new storm::analysis::Lattice(storm::storage::BitVector(8), storm::storage::BitVector(8), 8); |
|
|
|
|
|
// Validate assumption
|
|
|
|
|
|
EXPECT_FALSE(checker.validateAssumption(assumption, dummyLattice)); |
|
|
EXPECT_FALSE(checker.validated(assumption)); |
|
|
EXPECT_FALSE(checker.validated(assumption)); |
|
|
|
|
|
|
|
|
|
|
|
expressionManager->declareRationalVariable("6"); |
|
|
|
|
|
expressionManager->declareRationalVariable("8"); |
|
|
|
|
|
assumption = std::make_shared<storm::expressions::BinaryRelationExpression>( |
|
|
|
|
|
storm::expressions::BinaryRelationExpression(*expressionManager, expressionManager->getBooleanType(), |
|
|
|
|
|
expressionManager->getVariable("6").getExpression().getBaseExpressionPointer(), |
|
|
|
|
|
expressionManager->getVariable("8").getExpression().getBaseExpressionPointer(), |
|
|
|
|
|
storm::expressions::BinaryRelationExpression::RelationType::GreaterOrEqual)); |
|
|
|
|
|
storm::storage::BitVector above(13); |
|
|
|
|
|
above.set(12); |
|
|
|
|
|
storm::storage::BitVector below(13); |
|
|
|
|
|
below.set(9); |
|
|
|
|
|
dummyLattice = new storm::analysis::Lattice(above, below, 13); |
|
|
|
|
|
EXPECT_TRUE(checker.checkOnSamples(assumption)); |
|
|
|
|
|
EXPECT_TRUE(checker.validateAssumption(assumption, dummyLattice)); |
|
|
|
|
|
EXPECT_TRUE(checker.validated(assumption)); |
|
|
|
|
|
EXPECT_TRUE(checker.valid(assumption)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|