我正在尝试使用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) .