coq中max的交换性证明
我有一个函数max: 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
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。谢谢