I also like Alloy[1] for messing around with logical data structure definitions interactively.
I also like Alloy[1] for messing around with logical data structure definitions interactively.
My recent work has been on a verified JIT compiler and having to write tactics and lemmas to deal with facts about bit vectors seems stupid when SMT solvers are particularly good at this kind of reasoning.
[1]: Cool visualizations: https://www3.hhu.de/stups/prob/index.php/State_space_visuali...
I'm keeping it bookmarked just in case. Meanwhile, I just got a ton of stuff on asynchronous verification in response to another commenter's troubles there. I was away too long: looks like async and GALS are both mostly solved problems at the cutting edge with some tools to help. A lot to skim or read that puts my B experiments further on the backlog.
What I like Alloy for is checking to see if the operations you're defining to maintain a data structure actually maintain the desired invariants. It's nice for situations where you're not actually sure that what you're "trying to do" will even work like you expect.
With Coq, I tend to already know something will work and just want to verify that I've achieved it, so it's much less exploratory in nature.