Lean 集合论
集合论是数学的基础之一,它研究集合及其性质、关系和操作。在Lean中,集合论的概念通过类型论和逻辑系统得以实现。本文将带你逐步了解Lean中的集合论基础,并通过代码示例和实际案例帮助你掌握这一重要概念。
什么是集合?
集合是由不同元素组成的无序集合。在数学中,集合通常用大写字母表示,例如 A
、B
、C
,而集合中的元素用小写字母表示,例如 a
、b
、c
。集合的基本操作包括并集、交集、差集和补集。
在Lean中,集合可以通过类型 Set
来表示。Set
是一个函数类型,接受一个类型参数并返回一个命题(Prop
)。例如,Set Nat
表示自然数集合。
集合的定义
在Lean中,集合可以通过多种方式定义。最常见的方式是使用集合推导式(set comprehension)。例如,定义一个包含所有偶数的集合:
def even_numbers : Set Nat := {n : Nat | n % 2 = 0}
这里,even_numbers
是一个包含所有自然数 n
的集合,其中 n
满足 n % 2 = 0
。
集合的基本操作
并集
并集是指两个集合中所有元素的集合。在Lean中,可以使用 ∪
运算符来表示并集:
def A : Set Nat := {1, 2, 3}
def B : Set Nat := {3, 4, 5}
def A_union_B : Set Nat := A ∪ B
A_union_B
的结果是 {1, 2, 3, 4, 5}
。
交集
交集是指两个集合中共有的元素。在Lean中,可以使用 ∩
运算符来表示交集:
def A_inter_B : Set Nat := A ∩ B
A_inter_B
的结果是 {3}
。
差集
差集是指从一个集合中去除另一个集合中的元素。在Lean中,可以使用 \
运算符来表示差集:
def A_minus_B : Set Nat := A \ B
A_minus_B
的结果是 {1, 2}
。
补集
补集是指相对于某个全集,集合中不包含的元素。在Lean中,补集可 以通过差集来表示:
def complement_A : Set Nat := univ \ A
这里,univ
表示全集,即所有自然数的集合。
实际案例
案例1:过滤集合中的元素
假设我们有一个包含自然数的集合 S
,我们希望过滤出所有大于5的元素:
def S : Set Nat := {1, 3, 5, 7, 9}
def filtered_S : Set Nat := {n : Nat | n ∈ S ∧ n > 5}
filtered_S
的结果是 {7, 9}
。