三元关系,关系产品和本身就是关系的领域

时间:2017-04-11 12:40:49

标签: logic relational-algebra alloy

在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将每个文件系统与文件系统对象关联到目录。

有人可以用不同的例子来解释我吗?

1 个答案:

答案 0 :(得分:0)

关系包含具有每列值的行。它包含从其字段参数化的某些谓词(语句模板)中创建一些真正的命题(语句)的行。      - 人X爱人Y的(X,Y)行     爱

X      Y
------------
Rick   Ilsa
Victor Ilsa
Ilsa   Rick
Ilsa   Victor
Louis  Louis

值是特定集的成员。我们说套装是它的类型。变量的类型是它可以容纳的值的类型。关系值是集合的元素,即"产品"其领域的类型。

Loves的值是与X Person成员Y成员的所有关系的成员,而PersonLoves的成员。因此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()));