Hacker News new | ask | show | jobs
by johnbender 530 days ago
A minor point. This is more akin to testing because you’re only checking your formulae against a subset of system traces.

Formal methods connotes comprehensive evidence about system behavior. In the case of TLA and similar system that’s a state machine and not the real system but the output for the state machine is a proof that your LTL/CTL/TLA properties hold for all behaviors of the system (traces or trees of traces).

1 comments

Definitely, I'm playing fast and loose with "lightweight formal method here", thanks for making it clear.

I was mentioning it in the same context as e.g. the Amazon paper on lightweight formal methods [0] where they use property-based testing to test that the implementation conforms to the model specification.

In a similar spirit, linearizability checkers like Porcupine [1] are a nice mix of formalism and usability.

I really like those because they are incredibly powerful, don't require a model and verify the actual implementation - obviously as you mention they are not exhaustive.

[0] https://assets.amazon.science/77/5e/4a7c238f4ce890efdc325df8...

[1] https://github.com/anishathalye/porcupine