抱歉我的英文。我使用谷歌翻译。
证明任意类型(X:Set)是真的吗?
double-negation : ∀ X → ¬ (¬ X)
double-negation = ?
其中:
data ⊥ : Set where
data ¬_ (X : Set) : Set where
¬-constructor : (X → ⊥) → ¬ X
例如,证明ℕ:
很简单data ℕ : Set where
zero : ℕ
suc : ℕ → ℕ
double-negation : ℕ → ¬ (¬ ℕ)
double-negation n =
¬-constructor negation-contradiction
where
negation-contradiction : ¬ ℕ → ⊥
negation-contradiction (¬-constructor ν) = ν n
但在用ℕ
替换X
之后,无法检查它(因为n的类型未知,因此negation-contradiction
的类型未知。此外,它可以&#39 ;推断(我得到¬ n → ⊥
))。
我该如何证明?
答案 0 :(得分:6)
你无法证明
∀ X → ¬ (¬ X)
(1)
请记住
ℕ → ¬ (¬ ℕ)
不是(1)的实例,而是
∀ X → X → ¬ (¬ X)
可以证明。
答案 1 :(得分:4)
∀ X → ¬ (¬ X)
读起来像“所有命题都不是假的”。但是⊥
(和许多其他人)是错误的,所以我们实际上可以反驳你的陈述:
open import Function
open import Relation.Nullary
open import Data.Empty
nope : ¬ ((X : Set) -> ¬ (¬ X))
nope c = c ⊥ id