首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >双重否定证明

双重否定证明
EN

Stack Overflow用户
提问于 2015-08-22 04:43:20
回答 2查看 653关注 0票数 2

对不起我的英语。我用谷歌翻译。

证明任意类型(X : Set)是真的吗?

代码语言:javascript
复制
double-negation : ∀ X → ¬ (¬ X)
double-negation = ?

其中:

代码语言:javascript
复制
data ⊥ : Set where

data ¬_ (X : Set) : Set where
    ¬-constructor : (X → ⊥) → ¬ X

例如,ℕ很容易证明:

代码语言:javascript
复制
data ℕ : Set where
    zero : ℕ
    suc  : ℕ → ℕ

double-negation : ℕ → ¬ (¬ ℕ)
double-negation n =
    ¬-constructor negation-contradiction
    where
        negation-contradiction : ¬ ℕ → ⊥
        negation-contradiction (¬-constructor ν) = ν n

但是在用替换X之后,不能检查它(因为n的类型未知,因此negation-contradiction的类型是未知的。而且也不能推断(我得到¬ n → ⊥))。

我怎么能证明呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-22 11:27:45

你不能证明

∀ X → ¬ (¬ X) (1)

记住

ℕ → ¬ (¬ ℕ)

不是(1)的一个实例,但是

∀ X → X → ¬ (¬ X)

这一点可以证明。

票数 7
EN

Stack Overflow用户

发布于 2015-08-22 14:28:24

∀ X → ¬ (¬ X)读起来像是“所有的命题都不是假的”。但是 (和许多其他的)是错误的,所以我们实际上可以反驳您的说法:

代码语言:javascript
复制
open import Function
open import Relation.Nullary
open import Data.Empty

nope : ¬ ((X : Set) -> ¬ (¬ X))
nope c = c ⊥ id
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32152396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档