proposition: Lemma Zp_inv_strext : forall (x y:Zp)(x_ y_:_), (((Zp_inv x x_)[#](Zp_inv y y_))->(x[#]y)).
proof: Proof. intros x y Hx Hy. simpl. unfold ZModap; unfold Zp_inv. intro Hinv. intro Heq. generalize (Zmodeq_modeq _ _ _ Heq); clear Heq; intro Heq. elim Hinv. apply Zmodeq_eqmod. generalize (Zmod_relprime_inv m x p_gt_1 (Zp_nonz_relprime x Hx)). rewrite <- (Zmod_relprime_inv m y p_gt_1 (Zp_nonz_relprime y Hy)). rewrite (Zmod_mult_compat m x); auto. rewrite (Zmod_mult_compat m y); auto. rewrite Heq. rewrite <-Zmod_mult_compat; auto. rewrite <-Zmod_mult_compat; auto. intro Hmult. apply (Zmod_mult_elim_lft _ _ _ _ p_gt_0 (Zp_nonz_relprime y Hy) Hmult). exact m_gt_0. exact m_gt_0. exact p_gt_0. exact p_gt_0. Qed.
imports: CoRN.model.Zmod.ZMod CoRN.algebra.CFields