Repository navigation
|
Hi, I'm considering using Quint to model a somewhat complex system with a large state space. |
Replies: 2 comments 2 replies
|
Hi! Nice to hear you are considering Quint!
It should not make a significant difference, but we have not benchmarked this.
For both simulation and model checking with TLC, the main best practice is to reduce the state space. For instance, you can avoid making a bunch of unnecessary transitions by using the "messaage soup" pattern explained here. Realistically, if your state space is large, you will need to stick with simulations. In order to get more confidence from simulations, you need to convince yourself that it is covering enough of your state space. So you should write witnesses (properties that you expect to break at some point) and observe if they are actually breaking (or how frequently, by using the The simulator with |
|
The statement “if your state space is large, you will need to stick with simulations” may be somewhat misleading? In practice, model checking can still be effective even when the state space is moderately large. As discussed in Igor Konnov’s article https://protocols-made-fun.com/testing/model-checking/2026/03/09/random-walks.html#quick-summary, modern model checking techniques often avoid naive enumeration of all states. Instead, they rely on optimizations such as symbolic representations, partial-order reduction, and SMT-based reasoning, which can prune large portions of the state space and focus only on relevant behaviors. Because of these techniques, model checking can sometimes outperform random simulations when the system is “not too large,” especially if the bug lies in a rare corner case that simulations are unlikely to encounter. |
Hi! Nice to hear you are considering Quint!
It should not make a significant difference, but we have not benchmarked this.
For both simulation and model checking with TLC, the main best practice is to reduce the state space. For instance, you can avoid making a bunch of unnecessary transitions by using the "messaage soup" pattern explained here.
To use Apalache, you also need to take into consideration the complexity of expressions, since it will do constraint solving (w…