作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Coq 中证明矛盾事物的经验非常有限,我无法找到一种明确的方法来用基本策略证明以下定理:
Theorem thrm : forall a, not (iff a (not a)).
我可以立即用 firstorder
来证明这一点或intuition
,但这些策略对我来说就像魔法一样,我的印象是它们涉及一些复杂的自动化。使用简单的显式策略(例如rewrite
)来证明该定理的更显式方法是什么? , destruct
, apply
, assert
?
最佳答案
为了证明否定命题不是某事
,可以使用intros
策略将预期错误的假设添加到上下文中,然后证明上下文确实不一致。这是因为 not Something
是 something -> False
的缩写。您可以通过键入 Print not.
或在证明过程中输入 unfold not.
来相应地替换目标来注意到这一点。
然后,为了实现如此获得的目标,可以根据上下文使用多种策略,例如:
介绍
、应用
、精确
和假设
用于最小命题逻辑;析构
、反转
、区分
或注入(inject)
等策略;<在您的示例中,intros
、destruct
、apply
和 assumion
就足够了:
Theorem thrm : forall a, not (iff a (not a)).
Proof.
intros a Hiff; destruct Hiff as [H1 H2].
apply H1; apply H2; intros Ha; apply H1; assumption.
Qed.
请注意,证明也可以缩短为以下等效版本:
Theorem thrm : forall a, not (iff a (not a)).
Proof. now intros a [H1 H2]; apply H1; apply H2; intros Ha; apply H1. Qed.
其中 now some
是 something 的符号;简单
(参见doc)。
希望这有帮助
关于logic - 用基本策略证明 not (iff a (not a)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48356672/
我是一名优秀的程序员,十分优秀!