coq中max的交换性证明

coq中max的交换性证明,coq,Coq,我有一个函数max: max的交换性证明如下: Theorem max_comm : forall n m : nat, max n m = max m n. Proof. intros n m. induction n as [|n']; induction m as [|m']; simpl; trivial. (* Qed. *) 这在S max n'm'=S max m'n'处结束,这似乎是正确的,并且考虑到基本情况已经被证明,似乎人们应该能够告诉coq

我有一个函数max:

max的交换性证明如下:

Theorem max_comm :
  forall n m : nat, max n m = max m n.
Proof.
  intros n m.
  induction n as [|n'];
    induction m as [|m'];
      simpl; trivial.
(* Qed. *)

这在S max n'm'=S max m'n'处结束,这似乎是正确的,并且考虑到基本情况已经被证明,似乎人们应该能够告诉coq使用递归!。然而,我不知道怎么做。有什么帮助吗?

问题是在对变量n进行归纳之前引入变量m,这使得归纳假设不那么一般。试试这个

intro n; induction n as [| n' IHn'];
  intro m; destruct m as [| m'];
    simpl; try (rewrite IHn'); trivial.

问题是在对变量n进行归纳之前引入变量m,这使得归纳假设不那么一般。试试这个

intro n; induction n as [| n' IHn'];
  intro m; destruct m as [| m'];
    simpl; try (rewrite IHn'); trivial.

通过这些例子,我们现在可以更清楚地理解为什么我们要破坏m而不是归纳m。谢谢通过这些例子,我们现在可以更清楚地理解为什么我们要破坏m而不是归纳m。谢谢