有人能解释这个分离逻辑的例子吗?
第一行和第二行有什么区别?
答案 0 :(得分:3)
第一行表示堆只包含一个堆,这样商店中的引用x指向它,并且它包含值4,4
。
在A中它是错误的,因为它忘记了y指向的堆栈(它没有正确表征整个堆)。
第二行表示堆可以在两个不相交的小堆中分开,这样其中一个由引用x指向并包含4,4
,第二行可以是任何东西
在A中,第二个小堆可以是y指向的小堆。在B中,第二个小堆可以是emp
。
第三行仅在A中为真,因为在B中,指向4,4
的小堆不是不相交的。
第四行仅在B中为真,因为它表示整个堆可以被描述为包含由x引用的4,4
,并且包含由{引用的4,4
。
它在A中不正确,因为A包含两个不相交的4,4
副本,所以应该使用分离连接来描述。
答案 1 :(得分:0)
这些是分离逻辑的公理。我能理解第一个,第二个和最后一个,但我无法理解第三个。
有人可以向我解释一下吗? [X/x]
是什么意思?
“x
中的每个e
都会被X
替换”,是不是?