在处理有关nat数的矛盾假设时,ssreflect、Coq的自动化

在处理有关nat数的矛盾假设时,ssreflect、Coq的自动化,coq,ssreflect,Coq,Ssreflect,在下列引理中使用ssreflect: From mathcomp Require Import ssreflect ssrfun ssrbool ssrnat eqtype. Lemma nat_dec n m: (m <= n) -> (~~ (m <= n)) -> False. Proof. intros A notA. (* auto. *) red in A. red in notA. (* auto. *) rewrite ->

在下列引理中使用
ssreflect

From mathcomp Require Import ssreflect ssrfun ssrbool ssrnat eqtype.

Lemma nat_dec n m: (m <= n) -> (~~ (m <= n)) -> False.
Proof.
  intros A notA.
  (* auto. *)
  red in A.
  red in notA.
  (* auto. *)
  rewrite -> A in notA.
  auto.
Qed.
来自mathcomp的
要求导入ssreflect ssrfun ssrbool ssrnat eqtype。
引理nat_dec n m:(m(~~(m)False。
证明。
介绍一位公证人。
(*自动。*)
A中的红色。
诺塔的红色。
(*自动。*)
在notA中重写->A。
自动的。
Qed。
我可以问一下为什么我注释掉的那些自动程序,在那些证明状态下不起作用吗?因为在我看来,这些状态已经在上下文中观察到了矛盾


通过
ssreflect
来证明这个引理是否有一些自动化?

我认为如果你去掉一些符号和强制,你就能更清楚地看到这个目标中发生了什么:

Lemma nat_dec n m: (m <= n = true) -> (negb (m <= n) = true) -> False.

因此,在简化后,
false=true
在上下文中,并且
auto
确实可以实现目标。

我认为,如果删除一些符号和强制,您可以更清楚地了解该目标中的情况:

Lemma nat_dec n m: (m <= n = true) -> (negb (m <= n) = true) -> False.
因此,简化后,
false=true
在上下文中,并且
auto
确实可以实现目标