(*
Lemma bool_to_nat_negb : (b:bool)
	(bool_to_nat (negb b))=(minus (S O) (bool_to_nat b)).
Induction b;Auto.
Qed. Hints Resolve bool_to_nat_negb.
*)


(****************************************************************)
(* Conditionnelle polymorphique: le test est un booleen,        *)
(* les clauses d'un type quelconque (le meme pour les 2 clauses *)

Definition If (T : Set) (b : bool) (x y : T) :=
  match b with
  | true => x
  | false => y
  end.

Lemma If_cond_true : forall (T : Set) (a : bool) (x y : T), x <> y -> If T a x y = x -> a = true.