(** * 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_plus : forall (a : Z) (n m : nat), Exp a (n + m) = (Exp a n * Exp a m)%Z.