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习语。