如何证明定理¬???在阿格达?

Rao*_*oul 1 logic proof agda

遵循Haskell逻辑,数学和编程之路,您可以找到第48页定理2.12.1 ¬ ? ? ?及其反义词¬ ? ? ?

该书使用Haskell并假设

  1. ? = False
  2. ? = True

这将产生Agda类型theorem : (p q : Bool) ? not p ? q,可以通过轻松证明refl

但是,在不假设1和2的情况下可以证明原始定理吗?

-- from software foundations (https://plfa.github.io/Negation/)
postulate
  excluded-middle : ? {A : Set} ? A ? ¬ A

theorem : ¬ ? ? ?
theorem x = {!!}
Run Code Online (Sandbox Code Playgroud)

当然,由于我们无法构建?,因此不会产生任何解决方案,所以我想需要矛盾的证明吗?另外,我是否假设这假设了排除中间的定律,因此这是附加的假设?

阿格达(Agda)说:

我不确定是否应该使用构造函数refl,因为在尝试解决以下统一问题(推断索引?预期索引)时,我陷入了困境。??在检查表达式时?有类型吗?

谢谢!

And*_*ács 5

这在没有假设的简单阿格达中是可证明的。解决方案是? ? ?使我们能够将的任何证明?转化为的证明?

open import Data.Unit
open import Data.Empty
open import Relation.Binary.PropositionalEquality
open import Relation.Nullary

theorem : ¬ (? ? ?)
theorem eq = subst (? A ? A) eq tt
Run Code Online (Sandbox Code Playgroud)