(** * Exponential function with exponent in nat. *)

Fixpoint Exp (a : Z) (n : nat) {struct n} : Z :=
  match n with
  | O => 1%Z
  | S m => (a * Exp a m)%Z
  end.

Lemma exp_abn : forall (a b : Z) (n : nat), Exp (a * b) n = (Exp a n * Exp b n)%Z.