Coq 将目标拆分为子目标
考虑以下玩具练习:Coq 将目标拆分为子目标,coq,coq-tactic,Coq,Coq Tactic,考虑以下玩具练习: Theorem swap_id: forall (m n : nat), m = n -> (m, n) = (n, m). Proof. intros m n H. 在这一点上,我有以下几点: 1 subgoal m, n : nat H : m = n ______________________________________(1/1) (m, n) = (n, m) 我想把目标分成两个子目标,m=n和n=m。有没有这样的策略?使用该策略解决: 与国家:
Theorem swap_id: forall (m n : nat), m = n -> (m, n) = (n, m).
Proof.
intros m n H.
在这一点上,我有以下几点:
1 subgoal
m, n : nat
H : m = n
______________________________________(1/1)
(m, n) = (n, m)
我想把目标分成两个子目标,m=n
和n=m
。有没有这样的策略?使用该策略解决:
与国家:
2 subgoals
m, n : nat
H : m = n
______________________________________(1/2)
m = n
______________________________________(2/2)
n = m
使用策略解决:
与国家:
2 subgoals
m, n : nat
H : m = n
______________________________________(1/2)
m = n
______________________________________(2/2)
n = m
关于f_equal原因的一点评论是有效的:如果我们展开一些符号,我们将从目标
(m,n)=(n,m)
到pair m n=pair n m
,其中pair
是prod
数据类型的唯一构造函数。在这一点上,很明显为什么f_equal
会将目标分成两个子目标。一个关于f_equal
原因的评论是有效的:如果我们展开一些符号,我们将从目标(m,n)=(n,m)
到对m n=对n m
,其中,pair
是prod
数据类型的唯一构造函数。在这一点上,很明显为什么f_equal
会将目标分成两个子目标。这仅仅是为了好玩,还是有一些深层次的原因来拆分目标?没有深层次的原因,我只是在尝试学习基本的Coq习惯用法。是为了好玩还是有一些深层次的原因来拆分目标?没有深层次的原因,我只是想学习基本的Coq习语。