【发布时间】:2014-12-12 19:08:19
【问题描述】:
所以我有这个mwe:
abstract sig S { r: set S }
one sig A, B extends S {}
one sig C { }
run { r = A->B and A->A + B->B + A->B = *r }
我希望自反传递闭包是A->A + B->B + A->B,这将是传递和自反的最小封闭关系,包含它定义的域中的所有元素 (S = A+B)。然而,事实并非如此。
在语言参考中它说
关系的自反-传递闭包是传递和自反的最小封闭关系(即包括恒等关系)。
然而,括号中的加法似乎是字面意思,意思是C->C 在关系的自反传递闭包中,为S->S 定义。我想知道为什么会这样......因为它在技术上不在数学中定义的“真正的”自反传递闭包中。
*r = ^r + iden & S->S 不是更好吗?特别是,因为C->C in *r 会引发警告。我认为这表明*r 确实意味着 限于S->S,但不实际上 限于S->S。
【问题讨论】:
标签: alloy