(****************************************************************)
(* La fonction puissance de 2 *)

Fixpoint power2 (n : nat) : nat :=
  match n with
  | O => 1
  | S x => power2 x + power2 x
  end.

(* Specifications: *)
Lemma power2_eq2 : forall x : nat, power2 (S x) = power2 x + power2 x.
Lemma power2_plus : forall x y : nat, power2 (x + y) = power2 x * power2 y.
Theorem le_plus_n_m : forall n m : nat, n <= m -> n + n <= m + m.
Theorem lt_plus_n_m : forall n m : nat, n < m -> S (n + n) < m + m.
Lemma le_plus_lem1 : forall a b c : nat, a <= b -> c + a <= c + b.
Lemma le_plus_lem2 : forall a b c : nat, c + a <= c + b -> a <= b.
Lemma gt_double : forall a b : nat, a + a > b + b -> a > b.
Lemma gt_double_inv : forall a b : nat, a > b -> a + a > b + b.
Lemma gt_double_n_S : forall a b : nat, a > b -> a + a > S (b + b).
Lemma gt_double_S_n : forall a b : nat, a > b -> S (a + a) > b + b.
Lemma minus_le_O : forall a b : nat, a <= b -> a - b = 0.
Lemma minus_n_SO : forall n : nat, n - 1 = pred n.
Lemma minus_le_lem2c : forall a b : nat, a - S b <= a - b.
Lemma minus_le_lem2 : forall a b : nat, a - b <= a.
Lemma minus_minus_lem1 : forall a b : nat, a - b - a = 0.
Lemma minus_minus_lem2 : forall a b : nat, b <= a -> a - (a - b) = b.
Lemma le_minus_minus : forall a b c : nat, c <= b -> a - b <= a - c.