在Alloy教程http://alloy.mit.edu/alloy/tutorials/online/frame-FS-3.html中,我们在FileSystem中定义了以下内容:
contents: Dir lone-> FSObject,
parent: FSObject ->lone Dir
在
// A File System
sig FileSystem {
root: Dir,
live: set FSObject,
contents: Dir lone-> FSObject,
parent: FSObject ->lone Dir
}
我无法理解以下解释:
这些是三元关系,使用关系乘积运算符(“ - >”)定义。将它们视为本身就是关系的领域。内容关系将每个文件系统映射到从目录到文件系统对象的二进制关系。同样,parent将每个文件系统与文件系统对象关联到目录。
有人可以用不同的例子来解释我吗?
答案 0 :(得分:0)
关系包含具有每列值的行。它包含从其字段参数化的某些谓词(语句模板)中创建一些真正的命题(语句)的行。 - 人X爱人Y的(X,Y)行 爱
X Y
------------
Rick Ilsa
Victor Ilsa
Ilsa Rick
Ilsa Victor
Louis Louis
值是特定集的成员。我们说套装是它的类型。变量的类型是它可以容纳的值的类型。关系值是集合的元素,即"产品"其领域的类型。
Loves
的值是与X
Person
成员Y
成员的所有关系的成员,而Person
是Loves
的成员。因此Person -> Person
及其值的类型为-- the (X, Z) rows where Z is the (A, B) rows where X will fly to A in B
Itinerary
。
所有引用都是说列的类型可以是关系。
X Z
--------------------------
Rick A B
------------------
Paris Spring
Casablanca Summer
Ilsa A B
------------------
Paris Spring
Casablanca Fall
Lisbon Fall
Victor A B
------------------
Casablanca Fall
Lisbon Fall
剧透警报!
Uri uploadUri = Uri.fromFile(new File(fileUri.toString()));