(* pow *)

Fixpoint pow (b e: nat) {struct e}: nat :=
  match e with
  | 0 => 1
  | S e' => b * pow b e'
  end.

(* Specifications: *)
Lemma pow_S x y: pow x (S y) = x * pow x y.
Lemma pow_min x: x <> 0%nat -> forall y, 0 < pow x y.