coq - 如何在 Coq 中证明 (p -> q) -> (~ p \/ q)
问题描述
我正在尝试使用 Axiom 在 Coq 中证明 (p -> q) -> (~ p / q):
Axiom tautology : forall P:Prop, P \/ ~ P.
我正在尝试通过应用 p -> q 将 ~ p / q 转换为 ~ p / p。所以做这样的事情:
Theorem Conversion: forall (p q: Prop),(p -> q) -> (~ p \/ q).
Proof.
intros p q.
intros p_implies_q.
(do something here, change ~p\/q into ~p\/p)
apply tautology...
但我不知道我该怎么做。如果有更好的方法可以做到这一点,请告诉我。谢谢!。
解决方案
使用你的一种方法是使用tautology
tactic destruct
。这允许您减少到p
正确和p
不正确的情况。
Axiom tautology : forall P:Prop, P \/ ~ P.
Theorem Conversion: forall (p q: Prop),(p -> q) -> (~ p \/ q).
Proof.
intros p q.
intros p_implies_q.
destruct (tautology p) as [p_true | p_not_true].
- (* prove ~p \/ q using p *)
- (* prove ~p \/ q using ~p *)
Qed.
你能看到~p \/ q
在每种情况下如何证明吗?
推荐阅读
- reactjs - 如何制作从 Ghost (Content API) 到 Next.js 的响应式图像?
- python - 如何将logit shap值转换为概率
- mocha.js - 松露测试:返回错误:处理事务时出现虚拟机异常:恢复
- css - 从反应组件发送参数以更改伪类背景
- javascript - 用于将数据附加到 Google 表格的 React 组件可在 PC 上运行,但不适用于 iOS 或 Android
- powerbi - Power BI:过滤器更改时平均度量值不变(如月份)
- javascript - 不能匹配以一个相等或两个相等结尾的字符串
- html - 是否有可以与 HTML 一起使用的 CMS 系统
- amazon-web-services - 筛选 AppSync 订阅
- ios - SwiftUI 列表中基于约束的图像布局