(* End of proof of lem_couple_reunion_prop                                 *)

(***************************************************************************)
(*                        Les n-uplets                                     *)
(***************************************************************************)
Inductive isTupple : nat -> E -> Prop :=
  | c_0_tupple : isTupple 0 Vide
  | c_1_tupple : forall a : E, isTupple 1 a
  | c_2_tupple : forall a b : E, isTupple 2 (couple a b)
  | c_n_tupple :
      forall (a b : E) (n : nat),
      isTupple (S (S n)) b -> isTupple (S (S (S n))) (couple a b).(* End of proof of lem_couple_reunion_prop                                 *)

(***************************************************************************)
(*                        Les n-uplets                                     *)
(***************************************************************************)
Inductive isTupple : nat -> E -> Prop :=
  | c_0_tupple : isTupple 0 Vide
  | c_1_tupple : forall a : E, isTupple 1 a
  | c_2_tupple : forall a b : E, isTupple 2 (couple a b)
  | c_n_tupple :
      forall (a b : E) (n : nat),
      isTupple (S (S n)) b -> isTupple (S (S (S n))) (couple a b).(* End of proof of lem_couple_reunion_prop                                 *)

(***************************************************************************)
(*                        Les n-uplets                                     *)
(***************************************************************************)
Inductive isTupple : nat -> E -> Prop :=
  | c_0_tupple : isTupple 0 Vide
  | c_1_tupple : forall a : E, isTupple 1 a
  | c_2_tupple : forall a b : E, isTupple 2 (couple a b)
  | c_n_tupple :
      forall (a b : E) (n : nat),
      isTupple (S (S n)) b -> isTupple (S (S (S n))) (couple a b).(* End of proof of lem_couple_reunion_prop                                 *)

(***************************************************************************)
(*                        Les n-uplets                                     *)
(***************************************************************************)
Inductive isTupple : nat -> E -> Prop :=
  | c_0_tupple : isTupple 0 Vide
  | c_1_tupple : forall a : E, isTupple 1 a
  | c_2_tupple : forall a b : E, isTupple 2 (couple a b)
  | c_n_tupple :
      forall (a b : E) (n : nat),
      isTupple (S (S n)) b -> isTupple (S (S (S n))) (couple a b).(* End of proof of lem_couple_reunion_prop                                 *)

(***************************************************************************)
(*                        Les n-uplets                                     *)
(***************************************************************************)
Inductive isTupple : nat -> E -> Prop :=
  | c_0_tupple : isTupple 0 Vide
  | c_1_tupple : forall a : E, isTupple 1 a
  | c_2_tupple : forall a b : E, isTupple 2 (couple a b)
  | c_n_tupple :
      forall (a b : E) (n : nat),
      isTupple (S (S n)) b -> isTupple (S (S (S n))) (couple a b).Fixpoint cart_power (m : nat) : E -> E :=
  fun a : E =>
  match m with
  | O => Vide
  | S O => a
  | S (S n as N) => cartesien a (cart_power N a)
  end.

Lemma lem_eq_cart_power : forall a : E, cart_power 2 a = cartesien a a.