4 ms·
Allow is very different in that it approaches things by converting whatever you are trying to verify into first order logical formulae then trying to find some
by slaymaker1907 4y ago
Allow is very different in that it approaches things by converting whatever you are trying to verify into first order logical formulae then trying to find some model which violates the formula. This is undecidable in the general case, but Alloy works around this by limiting the domain to some finite size (so considering all possible sets below some size) in which case the problem is merely NP-complete and easily translated into SAT.
Because Alloy works off of first order logic, it's a lot more general than TLA+ but doesn't have temporal logic concepts like liveness as first class primitives. You can still model most of this stuff in Alloy, but I think Alloy is really best for when you want to verify something which doesn't have a good model checker available or in problem spaces which easily reduce to first order logic.
- hwayne 4y ago> Because Alloy works off of first order logic, it's a lot more general than TLA+ but doesn't have temporal logic concepts like liveness as first class primitives. This is incorrect: TLA+ is also based off first-order logic constructs and can generally represent a much wider range of systems than Alloy can. The difference is that Alloy is more tractable: what it can represent it can model check much, much faster than TLA+.