在 《集合族迪卡尔积(Cartesian product of a family of sets)浅析》 一文中,粗浅地解析了其名称的含义,即为什么要叫集合族的迪卡尔积。
1. 集合 (Set) A, 包含了 n个元素,a1, a2, ..., an。
2. 在集合A 上定义集合族(A family of sets)B(x) ,其中 x 是集合A的一个元素。也就是,集合A里的每个元素 x,都有对应的一个集合 B(x)。所有A里面元素对应的集合的集合就是集合族,记为 B(x), x 属于 A。( B(x) over A)
3. 把集合族 B(x), x 属于 A,里面的所有元素,看成是一个集合,那么,这个集合就叫作集合族的迪卡尔积了。
此时,如何标记其中的元素呢?这就要看这些元素是如何构造的,即 《类型(Type)是可构建集合(constructive set)》 一文中提到的,每个元素都是可构建的,因此,可以通过元素的构建方式,定义该元素。
首先,给定集合A里的一个元素 a,可以得到B(a)里面的一个元素,记作 b(a)。也就是,给定 a: A,有 b(a): B(a), 其中冒号‘:’表示属于的意思。此时,就产生了一个函数,a: A为其输入,b(a): B(a)为其输出。因此,我们可以记作, fun a:A => b(a), 该函数类型是,a: A -> B(a)。
由此,该函数, fun a:A => b(a),便是集合族迪卡尔积中的每个元素的构建方式,只要给定一个 a:A,我们就能构建出B(a)的一个元素,而所有的B(x)就是集合族的迪卡尔积。也就是
( fun a: A => b(a) ) : a:A -> B(a)
口