Fixpoint Zfast_pow_pos (v : Z) (e : positive) : Z :=
  match e with
  | xH => v
  | xO e' => Z.square (Zfast_pow_pos v e')
  | xI e' => Zmult v (Z.square (Zfast_pow_pos v e'))
  end.

Lemma Zdiv_eucl_unique : forall a b, Zdiv_eucl a b = (Zdiv a b, Zmod a b).