【问题标题】:Link between Alloy vars. and primary vars. and Alloy relational variables合金变量之间的链接。和主要变量。和合金相关变量
【发布时间】:2016-08-31 10:25:32
【问题描述】:

我似乎无法理解求解完成时显示的vars.primary vars. 数字的含义。 5.2.1 节中的 Alloy 书解释说,Alloy 关系变量映射到与每个关系的元组关联的布尔变量。但我不明白这个变量定义和gui中显示的变量计数之间的对应关系。例如,当此代码运行时(我使用的是 Alloy Analyzer 4.2 构建日期:2012-09-25 15:54 EDT。):

sig A {}

pred show {}
run show for 2

它显示

0 vars. 0 primary vars. 0 clauses.

虽然存在一种关系。当这段代码运行时:

sig A {}
fact {no A }
pred show {}
run show for 2

变量计数是这样的:

6 vars. 2 primary vars. 5 clauses.

我可以理解,这 2 个主要变量可能对应于集合 A 的最大 2 个元素,但我不明白枚举的另外 4 个变量是什么。

【问题讨论】:

    标签: alloy


    【解决方案1】:

    本质上,主变量是与您声明的签名实例相对应的变量。它们的数字代表在整个 Alloy 宇宙中创建的所有实例。另一方面,变量的总数通常更大,因为它还反映了在编码到 SAT 公式时表示给定事实所需的变量。 (有关 KodKod 底层求解器的统计信息的一些详细信息,请参见 here。)

    因此,在您的第二个示例中,由于签名实例限制为 2,主要变量的数量为 3。(例如,如果您添加另一个签名,主要变量的数量将为 4。)变量总数反映了公式(CNF)编码中的变量总数,这又取决于您声明的具体事实。请注意,在第一个示例中,不需要任何变量,因为没有要检查的内容(并且求解器不需要发出任何内容)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-12
      • 2019-02-12
      • 2019-11-02
      • 2016-05-03
      • 1970-01-01
      • 2021-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多