coq:将函数推送到模式匹配中

时间:2018-02-09 10:11:29

标签: coq

我们有一个函数f。

f : nat -> nat

如果我们将f应用于这样的模式匹配,

f match n with
  | O => O
  | S n' => n'
  end

我们如何重写如下?

match n with
| O => f O
| S n' => f n'
end

1 个答案:

答案 0 :(得分:3)

我认为最简单的方法是使用case策略。

Lemma lift_match : forall (f : nat -> nat) (n : nat),
    (f match n with
       | O => O
       | S n' => n'
       end) = 
    (match n with
     | O => f O
     | S n' => f n'
     end).
Proof.
  intros f n.
  case n; auto.
Qed.

另外,如果您定义上述引理,则可以在{1}}的证明中使用它。