【发布时间】:2020-03-09 23:01:50
【问题描述】:
我在 Agda 关注 Haskell Road to Logic、Maths and Programming。 书中写道:
空集是平凡的关系,是两个集合 A 和 B 之间的最小关系
在阿格达:
data ∅ : Set where
record ⊤ : Set where
record Σ (A : Set) (B : A → Set) : Set₁ where
constructor _,_
field
π₁ : A
π₂ : B π₁
_×_ : Set → Set → Set₁
A × B = Σ A (λ _ → B)
infixr 5 _×_ _,_
Relation : Set → Set₁
Relation P = P × P → Set
这样,我可以定义特定集合的关系:
lteℕ : Relation ℕ
lteℕ(x , y) = x ≤ℕ y where
_≤ℕ_ : ℕ → ℕ → Set
O ≤ℕ O = ⊤
O ≤ℕ S y = ⊤
S x ≤ℕ O = ∅
S x ≤ℕ S y = x ≤ℕ y
infixr 5 _≤ℕ_
但现在我有一个问题,因为空集关系的签名:
- 不能是空集,因为我之前已经定义为无人居住类型了
- 由于需要避免语言中的罗素悖论,即使使用不同的符号定义为
Ø : Relation Set也会导致错误Set₁ != Set when checking that the expression Set has type Set。
有没有一种在逻辑上仍然一致的方法?谢谢!
【问题讨论】:
-
你能指出你在这本书的哪一部分吗?
-
@MrO 第 5 章(关系)开始。这不是一个特别的练习。我只是在学习基础知识。
-
什么是,在你的代码中,应该代表空集?这将帮助我帮助您了解这一点。在旁注中,根据我在书中可以读到的内容,空集被称为微不足道的关系,因为关系由一组对表示,当它们为空时,它给出了空集。
-
@MrO 空集是第一行:
data ∅ : Set where这是无人居住的类型。我理解定义的琐碎性,但这意味着空集是任何两个集合之间的关系,不是吗?因此,我希望能够说空集的类型为Ø : Relation Set。没有? -
好的,现在我更清楚您的问题是什么了。我会尽快回复。
标签: logic agda theorem-proving set-theory