Hello Gareth Smith,
Thanks for taking the time to answer my doubts. I really appreciate it. Actually, I'm completely new to formal specification languages, especially TLA+ and I'm not aware of any special properties or operators I can use to achieve the semaphore as mentioned. But so far, I'm using the 'await' and 'fairness' keywords (
https://learntla.com/core/concurrency.html?highlight=await) to make a process run only when certain conditions are met and ensure it always makes some progress. I'm not sure if this is what achieves the same 'semaphore'.
My curiosity is mostly in the results of the TLC model checker and how to interpret them against the efficiency or effectiveness of my model. When I run my specs for validation, it ends successfully with statistical results. However, I don't quite understand how to interpret the results yet. Does that mean when I have two different approaches to modeling the system, the one that runs faster and explores less state will be considered the better design? Also, in statistics, there are several columns: Diameter, Status Found, Distinct States, Queue Size, etc. But I can only find a simple explanation here (
https://learntla.com/reference/standard-library.html?highlight=diameter) and it is not so detailed, or am I missing a specific location / URL that talks about them?