1

I modelled a timed model of two flip flop in UPPAAL , when i tried to verify some properties , I reached 6M states and my laptop was out of RAM, around 5Go was consumed, can anyone tell what it is the approximate state number that UPPAAL can deal with ? and what are the possible techniques to deal with state explosion in UPPAAL ?
Thank you

1 Answers1

1

The number of states depends on:

  1. the size of available memory. On 32bit architectures it is limited to 4GB.

  2. the size/footprint of individual states.

  3. the shape of state space and the order of exploration.

  4. granularity of symbolic states (how well the constraint intervals span: if the time is discretized then the symbolic techniques will scale poorly).

You could try the following techniques:

  1. Apply abstraction and remove unnecessary variables: make variables const, set variables to zero when unused, one-transition-communication-only variables can be marked "meta" (don't abuse this one! or you will get in trouble with bizarre behavior).

  2. optimize space consumption by setting state space reduction to aggressive.

  3. apply partial order reduction, symmetry reduction.

  4. apply sweep-line method (look for keyword "progress" in Uppaal help).

Look at Uppaal tutorial for further information.

mariusm
  • 1,483
  • 1
  • 11
  • 26
  • thank you @mariusm , I am working now to understand the symmetry reduction and sweep-line method, however in the tutorial it was mentioned that UPPAAL does not support partial order reduction ! Was it supported in another version of UPPAAL you think ? I work with 4.1.19 – Hachani Ahmed Dec 01 '16 at 03:52
  • Uppaal does not support *automatic* partial order reduction, but you can still make your models follow partial order reduction schemes. – mariusm Dec 01 '16 at 09:32
  • thank you @mariusm for your feed back, If I am using the graphical interface of UPPAAL to build my model , can you tell some hints how should I follow partial order reduction schemes in UPPAAL , like should I switch to the textual version *.xta and try to make an algorithm to optimise my model ,or I remain in the graphical interface of UPPAAL and follow a specific methodology ? Thank you – Hachani Ahmed Dec 01 '16 at 17:48
  • If you can automatically generate models then XTA is probably easier. Otherwise the POR techniques need to be applied at very abstract level, i.e. you have to reason yourself what edges can be grouped into one, which synchronizations can be replaced with broadcasts and so on. – mariusm Dec 03 '16 at 01:27
  • Thank you @mariusm , I don't get the part of generating automatically UPPAAL models , for now I write my model manually automatically you mean I develop a script that convert VHDL models or C model for example into XTA format ? – Hachani Ahmed Dec 03 '16 at 22:57
  • @HachaniAhmed, yes, something like that. – mariusm Dec 03 '16 at 23:07
  • I do have a confusion regarding how to implement the abstraction techniques , like for symmetry reduction , I thought I should Have access to the model checking algorithm so I can implement some abstraction technique , with UPPAAL it is like a black box, like should I have access to the source code of the UPPAAL model checker or there is options on how I can add some macros and abstraction algorithms so it can be used within UPPAAL ? Thanks – Hachani Ahmed Dec 29 '16 at 15:31
  • @HachaniAhmed all Uppaal algorithms are published, the world is your oyster. – mariusm Dec 30 '16 at 10:48