prismmodelchecker / prism

The main development version of the PRISM model checker.
http://www.prismmodelchecker.org/
GNU General Public License v2.0
153 stars 69 forks source link

missing states in output model #7

Closed yijunyu closed 8 years ago

yijunyu commented 8 years ago

Hi,

I created a DTMC model: ======= example.pm ====== dtmc module example s : [0..11] init 0; []s=0->0.01:(s'=0)+0.40:(s'=1)+0.40:(s'=2)+0.19:(s'=8); []s=1->0.20:(s'=0)+0.80:(s'=3); []s=2->0.40:(s'=0)+0.5:(s'=3)+0.1:(s'=5); []s=3->0.20:(s'=0)+0.3:(s'=1)+0.3:(s'=2)+0.2:(s'=4); []s=4->1:(s'=4); []s=5->0.75:(s'=2)+0.25:(s'=6); []s=6->0.30:(s'=5)+0.7:(s'=7); []s=7->1.00:(s'=3); []s=8->0.9:(s'=0)+0.1:(s'=8); []s=9->0.35:(s'=8)+0.6:(s'=10)+0.05:(s'=11); []s=10->0.8:(s'=9)+0.2:(s'=11); []s=11->1:(s'=4); endmodule

Then invoking prism using the following command:

prism example.pm -exportmodel example.all -const p=0.9

Instead of receiving a state machine of 12 states, only 9 states were reported in the transition matrix. I have checked the parser of the pm input file, and couldn't find problem there.

  ===== example.tra =====

9 21 0 0 0.01 0 1 0.4 0 2 0.4 0 8 0.19 1 0 0.2 1 3 0.8 2 0 0.4 2 3 0.5 2 5 0.1 3 0 0.2 3 1 0.3 3 2 0.3 3 4 0.2 4 4 1 5 2 0.75 5 6 0.25 6 5 0.3 6 7 0.7 7 3 1 8 0 0.9 8 8 0.1

Best regards, Yijun

kleinj commented 8 years ago

Hi,

PRISM is building the part of the model that is reachable from the initial state (0). As your states 9, 10 and 11 are not reachable, they are not output.

If you want these states in your model, consider using the init ... endinit modelling construct to specify multiple initial states.

For such small models, exporting to a DOT file using the -exporttransdotstate output.dot switch is an easy way to get a graphical representation of the model that is useful for debugging your model.

yijunyu commented 8 years ago

Thank you, you are right !