Logic 如何证明coq中的反对称性

Logic 如何证明coq中的反对称性,logic,coq,Logic,Coq,定义关系[我想你的意思是“m这里有一个简短的解决方案: Require Omega. Definition le (n m:nat) := exists k, n + k = m. Theorem le_nm_mn_eq: forall n m, le n m -> le m n -> n = m. Proof. intros n m Hnm Hmn. inversion Hnm; inversion Hmn. omega. Qed. 它使用欧米茄,这样我就不必去

定义关系[我想你的意思是“
m这里有一个简短的解决方案:

Require Omega.

Definition le (n m:nat)  := exists k, n + k = m.

Theorem le_nm_mn_eq: forall n m, le n m -> le m n -> n = m.
Proof.
  intros n m Hnm Hmn.
  inversion Hnm; inversion Hmn.
  omega.
Qed.

它使用欧米茄,这样我就不必去摆弄所有的
nat
等式。

Coq证明的第一步通常是用散文来证明它。你能给我们看看你的散文证明吗?这是我的讲座,导师说他把这个作为练习…@jbapple对不起,我不能理解散文证明的意义…如果你是说第一步,我用intro归纳法…“散文”的意思是简单的语言。在一堂没有使用Coq的数学课上,你会如何证明这一点?
Lemma le_S_n : forall m n, le (S m) (S n) -> le m n.
Require Import Arith.

Definition le (m n :nat) := exists k, n = m + k.

Lemma le_refl : forall m, le m m.
Proof.
intro m; exists 0.
now rewrite <- plus_n_O.
Qed.

Lemma le_trans: forall m n p, le m n -> le n p -> le m p.
Proof.
intros m n p [k1 hk1] [k2 hk2]; exists (k1 + k2).
now rewrite plus_assoc, <- hk1.
Qed.

Lemma le_S_n : forall m n, le (S m) (S n) -> le m n.
Proof.
intros m n [k hk]; exists k.
simpl in hk.
now injection hk; intros.
Qed.

Lemma le_antisym: forall m n, le m n -> le n m -> m = n.
Proof.
induction m as [ | m hi]; destruct n as [ | n ]; simpl in *; intros h1 h2.
- reflexivity.
- destruct h2 as [k hk].
  simpl in hk; discriminate hk.
- destruct h1 as [k hk].
  simpl in hk; discriminate hk.
- now rewrite (hi n); [ reflexivity | apply le_S_n | apply le_S_n ].
Qed.
Require Omega.

Definition le (n m:nat)  := exists k, n + k = m.

Theorem le_nm_mn_eq: forall n m, le n m -> le m n -> n = m.
Proof.
  intros n m Hnm Hmn.
  inversion Hnm; inversion Hmn.
  omega.
Qed.