(* End of proof of lem_fun_is_rel                                          *)


(***************************************************************************)
(* Le domaine et l'image d'une relation non vide sont non vides            *)
(***************************************************************************)
(*
Lemma lem_rel_not_empty_so_rdom_not_empty :
  (r:E)(rRel:(rel r))
    ~(r=Vide)
    ->
    ~((rdom2 r rRel)=Vide)
.
(* Proof of lem_rel_not_empty_so_rdom_not_empty                            *)
Save.
(* End of proof of lem_rel_not_empty_so_rdom_not_empty                     *)
*)
(***************************************************************************)
(* Considerons maintenant des relations dont l'image est tout ou partie du *)
(* domaine.                                                                *)
(***************************************************************************)

(***************************************************************************)
(* Reflexivite & irreflexivite                                             *)
(***************************************************************************)
Definition reflexivity (r a : E) (rRel : rel_sig r a a) :=
  forall x : E, In x (rdom r a a rRel) -> In (couple x x) r.Definition irreflexivity (r a : E) (rRel : rel_sig r a a) :=
  forall x : E, In x (rdom r a a rRel) -> ~ In (couple x x) r.

(* Specifications: *)
Lemma lem_refl_dom_inc_img : forall (r a : E) (rRel : rel_sig r a a), reflexivity r a rRel -> inc (rdom r a a rRel) (rImg r a a rRel).
Lemma lem_refl_dom_inc_img_recip : forall (r a : E) (rRel : rel_sig r a a), ~ inc (rdom r a a rRel) (rImg r a a rRel) -> ~ reflexivity r a rRel.
Lemma lem_refl_not_irrefl : forall (r a : E) (rNe : r <> Vide) (rRel : rel_sig r a a), reflexivity r a rRel -> ~ irreflexivity r a rRel.
Lemma lem_irrefl_not_refl : forall (r a : E) (rNe : r <> Vide) (rRel : rel_sig r a a), irreflexivity r a rRel -> ~ reflexivity r a rRel.