有没有办法找到 Alloy 分析器考虑的案例数?

Is there a way to find the number of cases that the Alloy Analyzer considers?

软件抽象 的附录 E 有一个酒店运营模型。该模型有一个名为 NoIntruderassert。使用此命令评估断言:

check NoIntruder for 6 but 12 Time, 3 Room, 3 Guest

有没有办法找到 Alloy 分析器在评估 check 命令时考虑的案例数?来自 Analyzer 的此消息是否表示案例数?

Executing "Check NoIntruder for 6 but 12 Time, 3 Room, 3 Guest"
   Solver=sat4j Bitwidth=0 MaxSeq=0 SkolemDepth=1 Symmetry=20
   38549 vars. 921 primary vars. 76238 clauses. 90ms.
   No counterexample found. Assertion may be valid. 2914ms.

这取决于你所说的 "considers" 是什么意思。从广义上讲,搜索的状态 space 是 2^v,其中 v 是布尔变量的数量——在本例中为 38,459。当然,由于修剪,SAT 分析器不需要搜索整个 space,即使没有找到实例。