flyvy-verifier / flyvy

An experimental framework for temporal verification based on first-order linear-time temporal logic. Our goal is to express transition systems in first-order logic and verify temporal correctness properties, including safety and liveness.
BSD 2-Clause "Simplified" License
14 stars 1 forks source link

Improvements to qAlpha algorithm #77

Closed edenfrenkel closed 1 year ago

edenfrenkel commented 1 year ago

Add several improvements and modifications to qAlpha, including:

edenfrenkel commented 1 year ago

I don't think the snapshot tests of qalpha make sense, because they require the invariants in the output to be printed in a specific way, which isn't necessarily the case. The only algorithmic guarantee is that the same invariants will be found, but ordering and variable names may change. Previously, I tried using --gradual-advance to make it more deterministic, but it seems there's still some indeterminism that makes this work only most of the time. @tchajed what do you think?

tchajed commented 1 year ago

I agree that snapshotting the invariant isn't worth the trouble. One thing we can (and probably should) do is to omit the entire invariant in the output that we snapshot.

edenfrenkel commented 1 year ago

@tchajed I agree with your snapshotting suggestion. Would you like to implement this as a part of the snapshotting, or to add some command-line argument to avoid printing the invariant? If you want to change the snapshotting, can you implement that? I tried to take a look and I'm not completely sure how you'd want to go about this.

tchajed commented 1 year ago

I'll work on changing the snapshotting, I'd prefer to redact there if possible.

tchajed commented 1 year ago

I changed my mind and made it a flag, it was a little easier to implement. Is this branch ready for a review now?

edenfrenkel commented 1 year ago

I changed my mind and made it a flag, it was a little easier to implement. Is this branch ready for a review now?

Yes, looks ready.