(* Contribution to the Coq Library   V6.3 (July 1999)                    *)
(***************************************************************************)
(* File: couples.v                                                         *)
(* auteur: alex@sysal.ibp.fr                                               *)
(* date: 19/10/95                                                          *)
(***************************************************************************)
Require Export axs_remplacement.
Definition couple (a b : E) := paire (singleton a) (paire a b).
(* Proof of lem_paire_prop2                                                *)
intros; unfold iff in |- *; split; intros.
elim (lem_paire_propertie a b a c); intros.
elim H0; intros; [ idtac | idtac | auto with zfc ]; elim H2; intros;
[ auto with zfc | rewrite <- H3; rewrite H4; reflexivity ].
rewrite H; reflexivity.
Qed.
(* End of proof of lem_paire_prop2                                         *)
(* Proof of lem_sing_eq_paire                                              *)
intros; unfold singleton in |- *; unfold iff in |- *; split; intros.
elim (lem_paire_propertie a a b c); intros.
elim H0; intros;
[ auto with zfc
| elim H2; intros; split; auto with zfc
| auto with zfc ].
elim H; intros; rewrite <- H0; rewrite <- H1; reflexivity.
Qed.
(* End of proof of lem_sing_eq_paire                                       *)

(***************************************************************************)
(* (a,b)=(c,d) <==> (a=c /\ b=d)                                           *)
(***************************************************************************)
Lemma lem_couple_propertie :
forall al ar bl br : E, couple al bl = couple ar br <-> al = ar /\ bl = br.