@ -13,6 +13,8 @@
# include "src/storage/dd/CuddAdd.h"
# include "src/storage/dd/CuddBdd.h"
# include "src/models/symbolic/StandardRewardModel.h"
# include "src/utility/solver.h"
TEST ( PrismMenuGame , DieAbstractionTest ) {
@ -25,11 +27,10 @@ TEST(PrismMenuGame, DieAbstractionTest) {
storm : : prism : : menu_games : : AbstractProgram < storm : : dd : : DdType : : CUDD , double > abstractProgram ( program . getManager ( ) , program , initialPredicates , std : : make_unique < storm : : utility : : solver : : MathsatSmtSolverFactory > ( ) , false ) ;
storm : : dd : : Add < storm : : dd : : DdType : : CUDD > abstraction ;
ASSERT_NO_THROW ( abstraction = abstractProgram . getAbstractAdd ( ) ) ;
storm : : models : : symbolic : : StochasticTwoPlayerGame < storm : : dd : : DdType : : CUDD > game = abstractProgram . getAbstractGame ( ) ;
EXPECT_EQ ( 15 , abstraction . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 2 , abstractPro gr am. getReachableStates ( ) . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 15 , game . getNumberOfTransitions ( ) ) ;
EXPECT_EQ ( 2 , game . getNumberOfStates ( ) ) ;
}
TEST ( PrismMenuGame , DieAbstractionAndRefinementTest ) {
@ -42,14 +43,12 @@ TEST(PrismMenuGame, DieAbstractionAndRefinementTest) {
storm : : prism : : menu_games : : AbstractProgram < storm : : dd : : DdType : : CUDD , double > abstractProgram ( program . getManager ( ) , program , initialPredicates , std : : make_unique < storm : : utility : : solver : : MathsatSmtSolverFactory > ( ) , false ) ;
storm : : dd : : Add < storm : : dd : : DdType : : CUDD > abstraction ;
ASSERT_NO_THROW ( abstraction = abstractProgram . getAbstractAdd ( ) ) ;
ASSERT_NO_THROW ( abstractProgram . refine ( { manager . getVariableExpression ( " s " ) = = manager . integer ( 7 ) } ) ) ;
ASSERT_NO_THROW ( abstraction = abstractProgram . getAbstractAdd ( ) ) ;
storm : : models : : symbolic : : StochasticTwoPlayerGame < storm : : dd : : DdType : : CUDD > game = abstractProgram . getAbstractGame ( ) ;
EXPECT_EQ ( 15 , abstraction . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 3 , abstractPro gr am. getReachableStates ( ) . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 15 , game . getNumberOfTransitions ( ) ) ;
EXPECT_EQ ( 3 , game . getNumberOfStates ( ) ) ;
}
TEST ( PrismMenuGame , DieFullAbstractionTest ) {
@ -77,11 +76,10 @@ TEST(PrismMenuGame, DieFullAbstractionTest) {
storm : : prism : : menu_games : : AbstractProgram < storm : : dd : : DdType : : CUDD , double > abstractProgram ( program . getManager ( ) , program , initialPredicates , std : : make_unique < storm : : utility : : solver : : MathsatSmtSolverFactory > ( ) , false ) ;
storm : : dd : : Add < storm : : dd : : DdType : : CUDD > abstraction ;
ASSERT_NO_THROW ( abstraction = abstractProgram . getAbstractAdd ( ) ) ;
storm : : models : : symbolic : : StochasticTwoPlayerGame < storm : : dd : : DdType : : CUDD > game = abstractProgram . getAbstractGame ( ) ;
EXPECT_EQ ( 20 , abstraction . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 13 , abstractPro gr am. getReachableStates ( ) . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 20 , game . getNumberOfTransitions ( ) ) ;
EXPECT_EQ ( 13 , game . getNumberOfStates ( ) ) ;
}
TEST ( PrismMenuGame , CrowdsAbstractionTest ) {
@ -95,11 +93,10 @@ TEST(PrismMenuGame, CrowdsAbstractionTest) {
storm : : prism : : menu_games : : AbstractProgram < storm : : dd : : DdType : : CUDD , double > abstractProgram ( program . getManager ( ) , program , initialPredicates , std : : make_unique < storm : : utility : : solver : : MathsatSmtSolverFactory > ( ) , false ) ;
storm : : dd : : Add < storm : : dd : : DdType : : CUDD > abstraction ;
ASSERT_NO_THROW ( abstraction = abstractProgram . getAbstractAdd ( ) ) ;
storm : : models : : symbolic : : StochasticTwoPlayerGame < storm : : dd : : DdType : : CUDD > game = abstractProgram . getAbstractGame ( ) ;
EXPECT_EQ ( 16 , abstraction . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 2 , abstractPro gr am. getReachableStates ( ) . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 16 , game . getNumberOfTransitions ( ) ) ;
EXPECT_EQ ( 2 , game . getNumberOfStates ( ) ) ;
}
TEST ( PrismMenuGame , CrowdsAbstractionAndRefinementTest ) {
@ -113,14 +110,12 @@ TEST(PrismMenuGame, CrowdsAbstractionAndRefinementTest) {
storm : : prism : : menu_games : : AbstractProgram < storm : : dd : : DdType : : CUDD , double > abstractProgram ( program . getManager ( ) , program , initialPredicates , std : : make_unique < storm : : utility : : solver : : MathsatSmtSolverFactory > ( ) , false ) ;
storm : : dd : : Add < storm : : dd : : DdType : : CUDD > abstraction ;
ASSERT_NO_THROW ( abstraction = abstractProgram . getAbstractAdd ( ) ) ;
ASSERT_NO_THROW ( abstractProgram . refine ( { manager . getVariableExpression ( " observe0 " ) + manager . getVariableExpression ( " observe1 " ) + manager . getVariableExpression ( " observe2 " ) + manager . getVariableExpression ( " observe3 " ) + manager . getVariableExpression ( " observe4 " ) < = manager . getVariableExpression ( " runCount " ) } ) ) ;
ASSERT_NO_THROW ( abstraction = abstractProgram . getAbstractAdd ( ) ) ;
EXPECT_EQ ( 38 , abstraction . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 4 , abstractProgram . getReachableStates ( ) . getNonZeroCount ( ) ) ;
storm : : models : : symbolic : : StochasticTwoPlayerGame < storm : : dd : : DdType : : CUDD > game = abstractProgram . getAbstractGame ( ) ;
EXPECT_EQ ( 38 , game . getNumberOfTransitions ( ) ) ;
EXPECT_EQ ( 4 , game . getNumberOfStates ( ) ) ;
}
TEST ( PrismMenuGame , CrowdsFullAbstractionTest ) {
@ -188,11 +183,10 @@ TEST(PrismMenuGame, CrowdsFullAbstractionTest) {
storm : : prism : : menu_games : : AbstractProgram < storm : : dd : : DdType : : CUDD , double > abstractProgram ( program . getManager ( ) , program , initialPredicates , std : : make_unique < storm : : utility : : solver : : MathsatSmtSolverFactory > ( ) , false ) ;
storm : : dd : : Add < storm : : dd : : DdType : : CUDD > abstraction ;
ASSERT_NO_THROW ( abstraction = abstractProgram . getAbstractAdd ( ) ) ;
storm : : models : : symbolic : : StochasticTwoPlayerGame < storm : : dd : : DdType : : CUDD > game = abstractProgram . getAbstractGame ( ) ;
EXPECT_EQ ( 15113 , abstraction . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 8607 , abstractPro gr am. getReachableStates ( ) . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 15113 , game . getNumberOfTransitions ( ) ) ;
EXPECT_EQ ( 8607 , game . getNumberOfStates ( ) ) ;
}
TEST ( PrismMenuGame , TwoDiceAbstractionTest ) {
@ -208,11 +202,10 @@ TEST(PrismMenuGame, TwoDiceAbstractionTest) {
storm : : prism : : menu_games : : AbstractProgram < storm : : dd : : DdType : : CUDD , double > abstractProgram ( program . getManager ( ) , program , initialPredicates , std : : make_unique < storm : : utility : : solver : : MathsatSmtSolverFactory > ( ) , false ) ;
storm : : dd : : Add < storm : : dd : : DdType : : CUDD > abstraction ;
ASSERT_NO_THROW ( abstraction = abstractProgram . getAbstractAdd ( ) ) ;
storm : : models : : symbolic : : StochasticTwoPlayerGame < storm : : dd : : DdType : : CUDD > game = abstractProgram . getAbstractGame ( ) ;
EXPECT_EQ ( 58 , abstraction . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 4 , abstractPro gr am. getReachableStates ( ) . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 58 , game . getNumberOfTransitions ( ) ) ;
EXPECT_EQ ( 4 , game . getNumberOfStates ( ) ) ;
}
TEST ( PrismMenuGame , TwoDiceAbstractionAndRefinementTest ) {
@ -228,14 +221,12 @@ TEST(PrismMenuGame, TwoDiceAbstractionAndRefinementTest) {
storm : : prism : : menu_games : : AbstractProgram < storm : : dd : : DdType : : CUDD , double > abstractProgram ( program . getManager ( ) , program , initialPredicates , std : : make_unique < storm : : utility : : solver : : MathsatSmtSolverFactory > ( ) , false ) ;
storm : : dd : : Add < storm : : dd : : DdType : : CUDD > abstraction ;
ASSERT_NO_THROW ( abstraction = abstractProgram . getAbstractAdd ( ) ) ;
ASSERT_NO_THROW ( abstractProgram . refine ( { manager . getVariableExpression ( " d1 " ) + manager . getVariableExpression ( " d2 " ) = = manager . integer ( 7 ) } ) ) ;
ASSERT_NO_THROW ( abstraction = abstractProgram . getAbstractAdd ( ) ) ;
EXPECT_EQ ( 212 , abstraction . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 8 , abstractProgram . getReachableStates ( ) . getNonZeroCount ( ) ) ;
storm : : models : : symbolic : : StochasticTwoPlayerGame < storm : : dd : : DdType : : CUDD > game = abstractProgram . getAbstractGame ( ) ;
EXPECT_EQ ( 212 , game . getNumberOfTransitions ( ) ) ;
EXPECT_EQ ( 8 , game . getNumberOfStates ( ) ) ;
}
TEST ( PrismMenuGame , TwoDiceFullAbstractionTest ) {
@ -282,11 +273,10 @@ TEST(PrismMenuGame, TwoDiceFullAbstractionTest) {
storm : : prism : : menu_games : : AbstractProgram < storm : : dd : : DdType : : CUDD , double > abstractProgram ( program . getManager ( ) , program , initialPredicates , std : : make_unique < storm : : utility : : solver : : MathsatSmtSolverFactory > ( ) , false ) ;
storm : : dd : : Add < storm : : dd : : DdType : : CUDD > abstraction ;
ASSERT_NO_THROW ( abstraction = abstractProgram . getAbstractAdd ( ) ) ;
storm : : models : : symbolic : : StochasticTwoPlayerGame < storm : : dd : : DdType : : CUDD > game = abstractProgram . getAbstractGame ( ) ;
EXPECT_EQ ( 436 , abstraction . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 169 , abstractPro gr am. getReachableStates ( ) . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 436 , game . getNumberOfTransitions ( ) ) ;
EXPECT_EQ ( 169 , game . getNumberOfStates ( ) ) ;
}
TEST ( PrismMenuGame , WlanAbstractionTest ) {
@ -303,11 +293,10 @@ TEST(PrismMenuGame, WlanAbstractionTest) {
storm : : prism : : menu_games : : AbstractProgram < storm : : dd : : DdType : : CUDD , double > abstractProgram ( program . getManager ( ) , program , initialPredicates , std : : make_unique < storm : : utility : : solver : : MathsatSmtSolverFactory > ( ) , false ) ;
storm : : dd : : Add < storm : : dd : : DdType : : CUDD > abstraction ;
ASSERT_NO_THROW ( abstraction = abstractProgram . getAbstractAdd ( ) ) ;
storm : : models : : symbolic : : StochasticTwoPlayerGame < storm : : dd : : DdType : : CUDD > game = abstractProgram . getAbstractGame ( ) ;
EXPECT_EQ ( 307 , abstraction . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 4 , abstractPro gr am. getReachableStates ( ) . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 307 , game . getNumberOfTransitions ( ) ) ;
EXPECT_EQ ( 4 , game . getNumberOfStates ( ) ) ;
}
TEST ( PrismMenuGame , WlanAbstractionAndRefinementTest ) {
@ -324,14 +313,12 @@ TEST(PrismMenuGame, WlanAbstractionAndRefinementTest) {
storm : : prism : : menu_games : : AbstractProgram < storm : : dd : : DdType : : CUDD , double > abstractProgram ( program . getManager ( ) , program , initialPredicates , std : : make_unique < storm : : utility : : solver : : MathsatSmtSolverFactory > ( ) , false ) ;
storm : : dd : : Add < storm : : dd : : DdType : : CUDD > abstraction ;
ASSERT_NO_THROW ( abstraction = abstractProgram . getAbstractAdd ( ) ) ;
ASSERT_NO_THROW ( abstractProgram . refine ( { manager . getVariableExpression ( " backoff1 " ) < manager . integer ( 7 ) } ) ) ;
ASSERT_NO_THROW ( abstraction = abstractProgram . getAbstractAdd ( ) ) ;
EXPECT_EQ ( 612 , abstraction . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 8 , abstractProgram . getReachableStates ( ) . getNonZeroCount ( ) ) ;
storm : : models : : symbolic : : StochasticTwoPlayerGame < storm : : dd : : DdType : : CUDD > game = abstractProgram . getAbstractGame ( ) ;
EXPECT_EQ ( 612 , game . getNumberOfTransitions ( ) ) ;
EXPECT_EQ ( 8 , game . getNumberOfStates ( ) ) ;
}
TEST ( PrismMenuGame , WlanFullAbstractionTest ) {
@ -446,11 +433,10 @@ TEST(PrismMenuGame, WlanFullAbstractionTest) {
storm : : prism : : menu_games : : AbstractProgram < storm : : dd : : DdType : : CUDD , double > abstractProgram ( program . getManager ( ) , program , initialPredicates , std : : make_unique < storm : : utility : : solver : : MathsatSmtSolverFactory > ( ) , false ) ;
storm : : dd : : Add < storm : : dd : : DdType : : CUDD > abstraction ;
ASSERT_NO_THROW ( abstraction = abstractProgram . getAbstractAdd ( ) ) ;
storm : : models : : symbolic : : StochasticTwoPlayerGame < storm : : dd : : DdType : : CUDD > game = abstractProgram . getAbstractGame ( ) ;
EXPECT_EQ ( 59 , abstraction . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 37 , abstractPro gr am. getReachableStates ( ) . getNonZeroCount ( ) ) ;
EXPECT_EQ ( 59 , game . getNumberOfTransitions ( ) ) ;
EXPECT_EQ ( 37 , game . getNumberOfStates ( ) ) ;
}
# endif