繁体   English   中英

如何轻松地在Coq中证明以下内容,例如仅使用假设?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM