fact: Definition Zgcd_duv (a b : Z) := match a, b with | Z0, Z0 => (0%Z, (0%Z, 0%Z)) | Z0, Zpos b' => (Zpos b', (0%Z, 1%Z)) | Z0, Zneg b' => (Zpos b', (0%Z, (-1)%Z)) | Zpos a', Z0 => (Zpos a', (1%Z, 0%Z)) | Zpos a', Zpos b' => (Zpos (p_gcd a' b'), (p_gcd_coeff_a a' b', p_gcd_coeff_b a' b')) | Zpos a', Zneg b' => (Zpos (p_gcd a' b'), (p_gcd_coeff_a a' b', (- p_gcd_coeff_b a' b')%Z)) | Zneg a', Z0 => (Zpos a', ((-1)%Z, 0%Z)) | Zneg a', Zpos b' => (Zpos (p_gcd a' b'), ((- p_gcd_coeff_a a' b')%Z, p_gcd_coeff_b a' b')) | Zneg a', Zneg b' => (Zpos (p_gcd a' b'), ((- p_gcd_coeff_a a' b')%Z, (- p_gcd_coeff_b a' b')%Z)) end.
imports: CoRN.model.Zmod.ZDivides Coq.Init.Wf Coq(Lia)