|
|
|
|
|
by agentultra
3772 days ago
|
|
> How can I know that my sync algorithm works? TLA+ is one such language that can help you. It models computation at a higher level using the Temporal Logic of Actions. Essentially you define some variables to model your problem in and declare a bunch of next-state relations. You can then check your design against your correctness and liveness invariants to see if your expectations hold against all possible executions. If you are so inclined you can even go as far as proving it correct. I recently just grasped the proof of the strong-fairness property and it's amazing to me that we don't use predicate and temporal logic more frequently in software development. There are other languages of course such as Event-B and Z, but I find for learning these concepts TLA+ is a great introduction. [0] https://www.youtube.com/watch?v=iCRqE59VXT0 |
|