我知道(A \ / ~A)一般不可证明。如何构建一个集合A的例子,其中(A \ / ~A)是不可证明的,这可能吗?如果有可能,没有量词可能吗?
答案 0 :(得分:3)
我知道(A / ~A)一般不可证明。怎么去 关于构造集合A的示例,其中(A / ~A)不是 可证明的,
您已经举了一个例子:A \/ ~A
本身。
open import Level
open import Data.Empty
open import Relation.Nullary
open import Data.Sum
lem-for : ∀ {α} -> Set α -> Set α
lem-for A = A ⊎ ¬ A
lem : ∀ {α} -> Set (suc α)
lem = ∀ {A} -> lem-for A
lem-lem : ∀ {α} -> Set (suc α)
lem-lem = lem-for lem
lem
说"所有A
A
都是真或假"。 lem-lem
说"被排除在中间的法则是真的还是假的"。但我们知道建设性的lem
并不正确,因为Agda不是反经典的,lem
也不是假的。
其他经典逻辑公理(摘自Software Foundations书)
Definition peirce := ∀P Q: Prop,
((P→Q)→P)→P.
Definition classic := ∀P:Prop,
~~P → P.
Definition de_morgan_not_and_not := ∀P Q:Prop,
~(~P ∧ ¬Q) → P∨Q.
Definition implies_to_or := ∀P Q:Prop,
(P→Q) → (¬P∨Q).
这些全部+ lem
是等效的。
这是一个更好的例子:
open import Relation.Binary.PropositionalEquality
open import Data.Bool.Base
open import Data.Fin
eq : Set₁
eq = Fin 2 ≡ Bool
"伸展"谓词属于同一类。最简单的是函数扩展性,但我们也可以说
open import Coinduction
open import Data.Nat.Base
open import Data.Stream
zeros : Stream ℕ
zeros = 0 ∷ ♯ zeros
eq₂ : Set
eq₂ = zeros ≡ 0 ∷ ♯ zeros