(***********************************************************************
  **********************************************************************
  **********************************************************************
  	FACTORIAL*)
 
Fixpoint factorial (n : nat) : nat :=
  match n with
  | O => 1
  | S n' => n * factorial n'
  end.(***********************************************************************
  **********************************************************************
  **********************************************************************
  	POWER*)
 
Fixpoint power (x n : nat) {struct n} : nat :=
  match n with
  | O => 1
  | S n' => x * power x n'
  end.

Lemma power_O : forall n : nat, 1 <= n -> power 0 n = 0.