相关疑难解决方法(0)

如何在Coq中使用归纳型案例

我想用这种destruct策略来证明案件的陈述.我在线阅读了几个例子,我很困惑.有人能更好地解释一下吗?

这是一个小例子(有其他方法可以解决它,但尝试使用destruct):

 Inductive three := zero 
                  | one 
                  | two.
 Lemma has2b2: forall a:three, a<>zero /\ a<>one -> a=two.
Run Code Online (Sandbox Code Playgroud)

现在一些在线示例建议执行以下操作:

intros. destruct a.
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我得到:

3 subgoals H : zero <> zero /\ zero <> one
______________________________________(1/3) 
zero = two

______________________________________(2/3) 
one = two

______________________________________(3/3) 
two = two
Run Code Online (Sandbox Code Playgroud)

所以,我想证明前两种情况是不可能的.但机器将它们列为子目标,并希望我证明它们......这是不可能的.

摘要:如何准确丢弃不可能的案例?

我看过一些使用的例子,inversion但我不明白这个程序.

最后,如果我的引理依赖于几种归纳类型并且我仍想覆盖所有情况,会发生什么?

logic coq

9
推荐指数
2
解决办法
3642
查看次数

标签 统计

coq ×1

logic ×1