如何证明coq中两个相同归纳式的不同构造器产生的项的不相等性?
假设我有一个归纳法:如何证明coq中两个相同归纳式的不同构造器产生的项的不相等性?,coq,Coq,假设我有一个归纳法: Inductive DirectSum{L R: Type}: Type := | Left: L -> DirectSum L R | Right: R -> DirectSum L R . 我如何证明这一点 forall L R: Type, forall l: L, forall r: R, Left L <> Right R. forall L R:Type、forall L:L、forall R:R、Left L Right R。
Inductive DirectSum{L R: Type}: Type :=
| Left: L -> DirectSum L R
| Right: R -> DirectSum L R
.
我如何证明这一点
forall L R: Type, forall l: L, forall r: R, Left L <> Right R.
forall L R:Type、forall L:L、forall R:R、Left L Right R。
? 简易策略足以解决这一问题:
Inductive DirectSum (L R: Type): Type :=
| Left: L -> DirectSum L R
| Right: R -> DirectSum L R
.
Arguments Left {_ _}.
Arguments Right {_ _}.
Goal forall L R: Type, forall l: L, forall r: R, Left l <> Right r.
easy.
Qed.
inclusive DirectSum(L-R:Type):类型:=
|左:L->DirectSum L R
|右:R->DirectSum L R
.
参数左{{{}。
参数右{{{}。
所有左后:类型、所有左后:L、所有右后:R、左后右的目标。
容易的
Qed。
从内部来看,这是因为模式匹配。我们可以编写一个函数,在Left
上返回True
,在Right
上返回False
。如果条件相等,我们将得到True=False
,这就产生了矛盾