Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Coq:如何证明max a b<;=a和x2B;B_Coq_Coq Tactic - Fatal编程技术网

Coq:如何证明max a b<;=a和x2B;B

Coq:如何证明max a b<;=a和x2B;B,coq,coq-tactic,Coq,Coq Tactic,我无法证明简单的逻辑max a b考虑到@re3el评论,我们从他们的“纸笔校样”开始: 然而,我们可以对这个证明做一些改进。有各种各样的候选者,使用stdlib的一个很好的候选者是: Theorem max_sum_1 (a b: nat) : max a b <= a + b. Proof. now rewrite Nat.max_lub_iff; split; [apply le_plus_l | apply le_plus_r]. Qed. 然而,这一证明涉及使用重量级自动化策略

我无法证明简单的逻辑
max a b考虑到@re3el评论,我们从他们的“纸笔校样”开始:

然而,我们可以对这个证明做一些改进。有各种各样的候选者,使用stdlib的一个很好的候选者是:

Theorem max_sum_1 (a b: nat) : max a b <= a + b.
Proof.
now rewrite Nat.max_lub_iff; split; [apply le_plus_l | apply le_plus_r].
Qed.

然而,这一证明涉及使用重量级自动化策略,
omega
;我强烈建议所有初学者暂时避免使用这种方法,并学习如何更多地“手工”进行校对。事实上,使用任何支持SMT的策略,只需打电话给SMT即可解决最初的目标。

很抱歉不太熟悉coq策略,但如果这是一个一般的数学问题max(a,b)@DoesData:在coq中,我试图证明coq中的所有值都大于0的自然数。@AntonTrunov:编辑了问题。如果使用库证明少于40个字符,我可以发布它;然而,让我问你一件事,你如何用纸和笔证明这个引理?@ejgallego如果a>b max a b=a,a不应该也有一个没有ssr的简短证明:
需要导入算术。应用Max.Max\u case\u strong;ω
。在回答中提到这一点可能很好,谢谢Jason;我倾向于不向初学者教授
omega
和其他自动化策略,因为他们首先要学会如何在没有自动化的情况下进行校对,这一点非常重要。
if a>b max a b = a, a < a+b; else max a b = b, b < a+b
Require Import Arith.

Theorem max_sum (a b: nat) : max a b <= a + b.
Proof.
case (le_lt_dec a b).
+ now rewrite <- Nat.max_r_iff; intros ->; apply le_plus_r.
+ intros ha; apply Nat.lt_le_incl, Nat.max_l_iff in ha.
  now rewrite ha; apply le_plus_l.
Qed.
Theorem max_sum_1 (a b: nat) : max a b <= a + b.
Proof.
now rewrite Nat.max_lub_iff; split; [apply le_plus_l | apply le_plus_r].
Qed.
From mathcomp Require Import all_ssreflect.

Theorem max_sum_2 (a b: nat) : maxn a b <= a + b.
Proof. by rewrite geq_max leq_addl leq_addr. Qed.
Proof. apply Max.max_case_strong; omega. Qed.