(***********************************************************************
  **********************************************************************
  **********************************************************************
  	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 SO_power : forall x : nat, power 1 x = 1.