@ -138,25 +138,16 @@ void cleanUp() {
}
}
/*!
* Simple testing procedure .
*/
void testChecking ( ) {
storm : : settings : : Settings * s = storm : : settings : : instance ( ) ;
storm : : parser : : DtmcParser dtmcParser ( s - > getString ( " trafile " ) , s - > getString ( " labfile " ) , s - > getString ( " staterew " ) , s - > getString ( " transrew " ) ) ;
std : : shared_ptr < storm : : models : : Dtmc < double > > dtmc = dtmcParser . getDtmc ( ) ;
dtmc - > printModelInformationToStream ( std : : cout ) ;
storm : : formula : : Ap < double > * observe0Greater1Formula = new storm : : formula : : Ap < double > ( " one " ) ;
storm : : formula : : Eventually < double > * eventuallyFormula = new storm : : formula : : Eventually < double > ( observe0Greater1Formula ) ;
void testCheckingDie ( storm : : models : : Dtmc < double > & dtmc ) {
storm : : formula : : Ap < double > * oneFormula = new storm : : formula : : Ap < double > ( " one " ) ;
storm : : formula : : Eventually < double > * eventuallyFormula = new storm : : formula : : Eventually < double > ( oneFormula ) ;
storm : : formula : : ProbabilisticNoBoundsOperator < double > * probFormula = new storm : : formula : : ProbabilisticNoBoundsOperator < double > ( eventuallyFormula ) ;
storm : : formula : : Ap < double > * done = new storm : : formula : : Ap < double > ( " done " ) ;
storm : : formula : : ReachabilityReward < double > * reachabilityRewardFormula = new storm : : formula : : ReachabilityReward < double > ( done ) ;
storm : : formula : : RewardNoBoundsOperator < double > * rewardFormula = new storm : : formula : : RewardNoBoundsOperator < double > ( reachabilityRewardFormula ) ;
storm : : modelChecker : : GmmxxDtmcPrctlModelChecker < double > * mc = new storm : : modelChecker : : GmmxxDtmcPrctlModelChecker < double > ( * dtmc ) ;
storm : : modelChecker : : GmmxxDtmcPrctlModelChecker < double > * mc = new storm : : modelChecker : : GmmxxDtmcPrctlModelChecker < double > ( dtmc ) ;
mc - > check ( * probFormula ) ;
mc - > check ( * rewardFormula ) ;
@ -165,6 +156,76 @@ void testChecking() {
delete rewardFormula ;
}
void testCheckingCrowds ( storm : : models : : Dtmc < double > & dtmc ) {
storm : : formula : : Ap < double > * observe0Greater1Formula = new storm : : formula : : Ap < double > ( " observe0Greater1 " ) ;
storm : : formula : : Eventually < double > * eventuallyFormula = new storm : : formula : : Eventually < double > ( observe0Greater1Formula ) ;
storm : : formula : : ProbabilisticNoBoundsOperator < double > * probFormula = new storm : : formula : : ProbabilisticNoBoundsOperator < double > ( eventuallyFormula ) ;
storm : : modelChecker : : GmmxxDtmcPrctlModelChecker < double > * mc = new storm : : modelChecker : : GmmxxDtmcPrctlModelChecker < double > ( dtmc ) ;
mc - > check ( * probFormula ) ;
delete probFormula ;
storm : : formula : : Ap < double > * observeIGreater1Formula = new storm : : formula : : Ap < double > ( " observeIGreater1 " ) ;
eventuallyFormula = new storm : : formula : : Eventually < double > ( observeIGreater1Formula ) ;
probFormula = new storm : : formula : : ProbabilisticNoBoundsOperator < double > ( eventuallyFormula ) ;
mc - > check ( * probFormula ) ;
delete probFormula ;
storm : : formula : : Ap < double > * observeOnlyTrueSenderFormula = new storm : : formula : : Ap < double > ( " observeOnlyTrueSender " ) ;
eventuallyFormula = new storm : : formula : : Eventually < double > ( observeOnlyTrueSenderFormula ) ;
probFormula = new storm : : formula : : ProbabilisticNoBoundsOperator < double > ( eventuallyFormula ) ;
mc - > check ( * probFormula ) ;
delete probFormula ;
delete mc ;
}
void testCheckingSynchronousLeader ( storm : : models : : Dtmc < double > & dtmc , uint_fast64_t n ) {
storm : : formula : : Ap < double > * electedFormula = new storm : : formula : : Ap < double > ( " elected " ) ;
storm : : formula : : Eventually < double > * eventuallyFormula = new storm : : formula : : Eventually < double > ( electedFormula ) ;
storm : : formula : : ProbabilisticNoBoundsOperator < double > * probFormula = new storm : : formula : : ProbabilisticNoBoundsOperator < double > ( eventuallyFormula ) ;
storm : : modelChecker : : GmmxxDtmcPrctlModelChecker < double > * mc = new storm : : modelChecker : : GmmxxDtmcPrctlModelChecker < double > ( dtmc ) ;
mc - > check ( * probFormula ) ;
delete probFormula ;
electedFormula = new storm : : formula : : Ap < double > ( " elected " ) ;
storm : : formula : : BoundedUntil < double > * boundedUntilFormula = new storm : : formula : : BoundedUntil < double > ( new storm : : formula : : Ap < double > ( " true " ) , electedFormula , 1 ) ;
probFormula = new storm : : formula : : ProbabilisticNoBoundsOperator < double > ( boundedUntilFormula ) ;
for ( uint_fast64_t L = 1 ; L < 5 ; + + L ) {
boundedUntilFormula - > setBound ( L * ( n + 1 ) ) ;
mc - > check ( * probFormula ) ;
}
delete probFormula ;
electedFormula = new storm : : formula : : Ap < double > ( " elected " ) ;
storm : : formula : : ReachabilityReward < double > * reachabilityRewardFormula = new storm : : formula : : ReachabilityReward < double > ( electedFormula ) ;
storm : : formula : : RewardNoBoundsOperator < double > * rewardFormula = new storm : : formula : : RewardNoBoundsOperator < double > ( reachabilityRewardFormula ) ;
mc - > check ( * rewardFormula ) ;
delete rewardFormula ;
delete mc ;
}
/*!
* Simple testing procedure .
*/
void testChecking ( ) {
storm : : settings : : Settings * s = storm : : settings : : instance ( ) ;
storm : : parser : : DtmcParser dtmcParser ( s - > getString ( " trafile " ) , s - > getString ( " labfile " ) , s - > getString ( " staterew " ) , s - > getString ( " transrew " ) ) ;
std : : shared_ptr < storm : : models : : Dtmc < double > > dtmc = dtmcParser . getDtmc ( ) ;
dtmc - > printModelInformationToStream ( std : : cout ) ;
// testCheckingDie(*dtmc);
// testCheckingCrowds(*dtmc);
// testCheckingSynchronousLeader(*dtmc, 4);
}
/*!
* Main entry point .
*/
@ -175,7 +236,7 @@ int main(const int argc, const char* argv[]) {
}
printHeader ( argc , argv ) ;
// testChecking();
testChecking ( ) ;
cleanUp ( ) ;
return 0 ;