假设中的Coq矛盾

时间:2017-09-11 23:45:14

标签: coq coq-tactic

在Coq中,我有两个假设HH0,它们相互矛盾。问题是,对于某些专业化而言,它们只相互矛盾,而且在证据的这个时刻,背景并不是那么专业化。

此时我的证据上下文如下:

color : Vertex -> bool 
v : V_set 
a : A_set 
x0, x1 : Vertex 
H : v x0 -> v x1 -> a (A_ends x0 x1) \/ a (A_ends x1 x0) -> color x0 <> color x1 
H0 : v x0 -> v x1 -> a (A_ends x0 x1) \/ a (A_ends x1 x0) -> color x0 = color x1
______________________________________ 
False

由于此证明是关于图形(v =顶点集,a =弧集,color =顶点颜色),我可以很容易地显示自然的矛盾语言:假设某些图形包含顶点x0x1(它们是相邻的),x0x1不能同时具有相同和不同的颜色。因此,HH0不能同时为真,因此当前背景暗示了目标。

我应该如何在Coq中进行此操作,而不是始终生成v x0v x1a (A_ends x0 x1) \/ a (A_ends x1 x0)作为新的子目标?棘手的部分是:“假设某些图形存在va这样的形式”。

到目前为止,我尝试了auto, eauto, trivial, intuition, apply H in H0, contradiction H, omega

1 个答案:

答案 0 :(得分:4)

通常,您需要确保您的上下文符合您的非正式推理。你说:

  

假设某些图形包含顶点x0x1(它们是相邻的),x0x1不能同时具有相同和不同的颜色。

但是,这不是您的上下文所说的。您的上下文显示&#34;假设您有一个图形和两个顶点x0x1(可能或可能不在该图的顶点集中)。如果发生x0x1特别是在该图的顶点集中并且是相邻的,那么它们必须具有不同的颜色(这是H0)。但是,在这种情况下,我们已经知道x0x1具有相同的颜色(这是H1)。&#34;绘制的明显结论不是荒谬,而是简单地说这些x0x1不在图表上,或者不是相邻的。具体而言,图形可能为空,或者只有一个顶点而没有边缘。

我建议通过策略逐步完成证明策略,将每个上下文和目标转换回自然语言,并寻找从真正的定理到虚假定理的点。