构建者是否在Agda中脱节? (或如何反驳inj 1 x≡inj₂y)

时间:2015-01-31 11:00:51

标签: constructor agda theorem-proving disjoint-union

我还需要一个引理,表明inj₁ x ≡ inj₂ y是荒谬的,作为关于Agda中不相交联合类型()的更大定理的一部分。

此结果将直接来自 的两个构造函数,即inj₁inj₂,不相交。 Agda中的情况如何?我该如何证明?

以下是完整的引理:

open import Relation.Nullary
open import Relation.Binary.PropositionalEquality
open import Data.Sum


lemma : ∀ {a b} {A : Set a} {B : Set b} {x : A} {y : B} → ¬ inj₁ x ≡ inj₂ y
lemma eq = ?

1 个答案:

答案 0 :(得分:6)

数据类型构造函数是不相交的。我在Agda的类型系统元理论中说它是一个定理。

您可以尝试设置eq证明(C-c C-c),Agda会发现矛盾:

lemma : ∀ {a b} {A : Set a} {B : Set b} {x : A} {y : B} → ¬ inj₁ x ≡ inj₂ y
lemma ()

这种快乐的类型检查。