intro.
rewrite power_plus_lemma1 in H4.
assert (divides a (power p q)).
apply prime_power_qn with n;try (auto with arith);try omega.
exists ((power p r)*k*(power b n)).
rewrite <- H4;ring.
assert (0<n);try omega.
elim H5;intro a';intro.
rewrite H7 in H4.
rewrite power_mult_lemma1 in H4;rewrite power_power_lemma1 in H4.
assert ((power p (q*n))<>0).
intro;apply not_prime_zero;generalize (power_zero (q*n) p H8);intro;rewrite H9 in H;trivial.
rewrite <- (mult_assoc (power p (q*n))) in H4;rewrite <- (mult_assoc (power p (q*n))) in H4.
generalize (mult_lemma6 (power p r*k*power b n) (power a' n) (power p (q*n)) H8 H4).
fold (power p r * k * power b n <> power a' n).
apply nth_root_irrat;trivial.
Qed.

(* Specifications: *)
(** let x and n be two numbers such that n > 0, then either the n-th root of x is a natural number of it is not rationnal *)
Theorem nth_root : forall (x n:nat),(n>0)->{y:nat | x=(power y n)}+{forall (a b:nat),(b<>0)->x*(power b n)<>(power a n)}.
intros.