[英]How to easily prove the following in Coq such as using only assumptions?
是否有一种简单的方法可以证明Coq中的以下内容,例如仅使用假设?
(P -> (Q /\ R)) -> (~Q) -> ~P
这个问题有点含糊……您是否想知道是否有可能(是),答案是什么(请参见上面的亚瑟评论),或者如何考虑解决这些问题?
在后一种情况下,请记住目标是创建具有指定类型的“ lambda项”。 您可以使用“策略”来帮助您构筑“从内而外”的术语。最好是手动操作几次,以了解正在发生的事情以及该策略的实际作用,我认为这是为什么要进行此练习。
如果看你的例子,
(P -> (Q /\ R)) -> (~Q) -> ~P
您会看到它是三个(!)参数的函数。 这是因为最后一个类型~P
实际上意味着P -> False
,因此您需要创建的函数的参数类型为
P -> (Q /\ R)
Q -> False
P
函数应该构造一个类型项
False
您可以创建一个fun ABC => _
的术语fun ABC => _
,其中A, B, C
具有上面的类型(这是该方法的intros
),并且您需要提出一个应结合到_
的术语术语A, B, C
和原始Gallina结构。
在这种情况下,当您成功创建了Q /\\ R
类型的项时,您将必须对其进行“分解”以获得Q
类型的项(提示:为此,您将必须使用match
结构)。
希望这会有所帮助,而不会破坏乐趣!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.