coq - coq intros 模式可以在最合适的连接机会处拆分吗?
问题描述
我想知道是否有一些介绍模式可以介绍
A /\ B /\ C
为
H1: A /\ B
H2: C
我知道这 intros [H1 H2]
会产生
H1: A
H2: B /\ C
但无法弄清楚如何为另一个方向配置支架。这是一个简单的例子;但我有一个更复杂的连词和析取组合,我更喜欢从右到左破坏。
谢谢,
解决方案
Coq 中的_ /\ _
符号是右结合二元运算符,所以A /\ B /\ C
真的代表A /\ (B /\ C)
. 如果您想构建一些A /\ B
,您应该首先完全分解/\
( intros [HA [HB HC]].
,您可以任意嵌套模式),然后构建A /\ B
假设(例如使用assert (A /\ B) as HAB by (split ; [exact HA| exact HB]).
或您喜欢添加假设的任何其他方式)。
在更复杂的设置中,您可能想要编写引理and_assoc : forall A B C, A /\ B /\ C -> (A /\ B) /\ C
并使用视图模式。从一个目标开始,
A /\ B /\ C -> P
您可以使用intros [HAB HC]%and_assoc.
获取HAB : A /\ B
and HC : C
:该pat%and_assoc
部分说and_assoc
应该首先应用于顶级假设,然后进一步破坏 with pat
。
推荐阅读
- javascript - 多个短 if else 条件
- discord - Discord bot 狙击命令“无法读取未定义的属性 'get'”
- c# - 如何在 C# 中运行 powershell 命令
- c++ - 这三种创建向量的方式有何不同?
- terraform - 无法为 rds 子网组提供计数和子网 ID
- python - Pymongo:不断创建新的 id
- cmake - 是否可以在 cmake 中获取目标文件名?
- python - 为什么 matplotlib 不显示特定的数学文本
- visual-studio-code - 如何在我的 vscode 扩展中获取最新版本号?
- azure-devops - Azure DevOps 扩展项目名称返回 externalContentHost512