Search code examples
formal-verificationuppaal

Uppaal Verification not working as intended


So I'm trying to run a very simple verification on my model, however I get a message saying the property is not satisfied.

I'm trying to verify that in my model if ever Person(0) goes In eventually Person(0) will come Out.

Person(0).In --> Person(0).Out

Even though I manually went through all the possibilities in the simulator, I couldn't get any counterexamples for this verification (and in theory this condition should be satisfied).

Is there a problem with the syntax I am using, or does UPPAAL have a known issue with these kind of verifications?


Solution

  • You can get a counter-example loaded into simulator by checking Options -> Diagnostic trace -> Some. For this particular query (leads-to property) a common issue is that the system may stay in some location forever (or looping through multiple transitions) which basically prevents reaching the goal. The loop part of the counter example trace is highlighted in red. It can be difficult to observe/understand if there is only one location in the loop. The simulator still allows user add transitions to the trace which is legal and may give impression that the system will eventually reach the goal, but the point of the trace is that there is a way the system will not reach, and that is by stalling (and stalling is allowed too if there are no invariants).

    You can add timing invariants on those locations in order to avoid the infinite loops and forever waits.