Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Functional programming 需要关于证明直觉逻辑陈述的提示吗_Functional Programming_Agda_Dependent Type - Fatal编程技术网

Functional programming 需要关于证明直觉逻辑陈述的提示吗

Functional programming 需要关于证明直觉逻辑陈述的提示吗,functional-programming,agda,dependent-type,Functional Programming,Agda,Dependent Type,我是Agda的新手,一般来说,我是独立类型编程和证明助理的新手。我决定开始用我在中找到的定义,构造简单的直觉逻辑证明,我取得了一些成功。然而,当我试图写出以下证据时,我感到困惑: ∨-identity-indirect : {A B : Set} → (¬ A) ∧ (A ∨ B) → B 在纸上证明这一点相当简单:扩展-A,我们有A→ ⊥。因此,该语句相当于(⊥ ∨ (B)→ B,这显然是正确的 我成功地证明了后一部分,即,(⊥ ∨ (B)→ B: ∨-identity : {A : Set

我是Agda的新手,一般来说,我是独立类型编程和证明助理的新手。我决定开始用我在中找到的定义,构造简单的直觉逻辑证明,我取得了一些成功。然而,当我试图写出以下证据时,我感到困惑:

∨-identity-indirect : {A B : Set} → (¬ A) ∧ (A ∨ B) → B
在纸上证明这一点相当简单:扩展
-A
,我们有
A→ ⊥。因此,该语句相当于
(⊥ ∨ (B)→ B
,这显然是正确的

我成功地证明了后一部分,即,
(⊥ ∨ (B)→ B

∨-identity : {A : Set} → (⊥ ∨ A) → A
∨-identity (∨-left ())
∨-identity (∨-right A) = A
然后,我能够写:

∨-identity-indirect ⟨ ¬A , A∨B ⟩ = ∨-identity ?
建议我需要生成
⊥ ∨ B
通过拥有
-A
A∨ B
。我想以某种方式替换
A中的
A
∨ B
和A
,但我认为没有办法做到这一点。 尝试应用<代码>∨-身份案例分析模式至
∨-标识间接
,我收到一条错误消息,A应该是空的,但这对我来说并不明显-我想我需要通过使用
、A
,以某种方式让Agda明白这一点

我是在正确的轨道上,还是完全错了?我应该如何着手编写此
∨-标识间接
功能

建议我需要生成
⊥ ∨ B
通过拥有
-A
A∨ B
。我想以某种方式替换
A中的
A
∨ B
和A,但我认为没有办法做到这一点。 尝试应用<代码>∨-身份案例分析模式至
∨-标识间接
,我收到一条错误消息,A应该是空的,但这对我来说并不明显-我想我需要通过使用
、A
,以某种方式让Agda明白这一点

您可能试图将类型为
-a
的值与
()
的值进行模式匹配,但这不起作用,因为
-a
扩展为
a->⊥,即它是一个只返回
A
之后。以下是如何做到这一点:

replace-A : {A B : Set} → (¬ A) → (A ∨ B) → ⊥ ∨ B
replace-A f (v-left  x) = v-left (f x)
replace-A _ (v-right y) = v-right y
有了这个,
∨-标识间接
很简单:

∨-identity-indirect : {A B : Set} → (¬ A) ∧ (A ∨ B) → B
∨-identity-indirect ⟨ ¬A , A∨B ⟩ = ∨-identity (replace-A ¬A A∨B)