用Coq证明模乘逆的存在性

时间:2018-11-27 12:21:50

标签: coq

我正在尝试使用Coq证明中国余数定理。 当前,我正在尝试证明模乘逆的存在,这是我到目前为止所做的:

Theorem modulo_inv : forall m n : Z, rel_prime m n -> exists x : Z, (m * x == 1 [ n ]) .
Proof .
  intros m0 n0 co_prime0 .
  destruct (rel_prime_bezout _ _ co_prime0) as [u v Eq].
  cut (u * m0 = 1 - v * n0); auto with zarith .
  intros Eq0 .
  exists u.
  (* the subgoal is Eq0 *)
  Abort.

现在剩下的只有一个子目标,其含义与Eq0相同,如下所示:

1 subgoal
m, n : Z
co_prime : rel_prime m n
m0, n0 : Z
co_prime0 : rel_prime m0 n0
u, v : Z
Eq : u * m0 + v * n0 = 1
Eq0 : u * m0 = 1 - v * n0
______________________________________(1/1)
(m0 * u == 1 [n0])

有人知道如何显示子目标等于Eq0吗?

P.S。模的定义如下:

Definition modulo (a b n : Z) : Prop := (n | (a - b)) .
Notation "( a == b [ n ])" := (modulo a b n) .

0 个答案:

没有答案