(* Contribution to the Coq Library   V6.3 (July 1999)                    *)

(****************************************************************************)
(*                                                                          *)
(*                          Constructive Geometry                           *)
(*                             according to                                 *)
(*                            Jan von Plato                                 *)
(*                                                                          *)
(*                               Coq V5.10                                  *)
(*									    *)
(*			        Gilles Kahn 				    *)
(*				   INRIA                                    *)
(*		              Sophia-Antipolis		 	            *)
(*									    *)
(*                                                                          *)
(* Acknowledgments: This work started in Turin in May 95 with Yves Bertot.  *)
(* Thanks to the Newton Institute for providing an exceptional work         *)
(* environment in Summer 1995 so that I could complete this.                *)
(****************************************************************************)


(****************************************************************************)
(*                              basis.v                                     *)
(*                                                                          *)
(* Basic definitions, axioms, figures                                       *)
(****************************************************************************)

Definition Relation (U : Set) := U -> U -> Prop.Definition Reflexive (U : Set) (R : Relation U) : Prop := forall x : U, R x x.Definition Transitive (U : Set) (R : Relation U) : Prop :=
  forall x y z : U, R x y -> R y z -> R x z.Definition Symmetric (U : Set) (R : Relation U) : Prop :=
  forall x y : U, R x y -> R y x.Inductive Equivalence (U : Set) (R : Relation U) : Prop :=
    Definition_of_equivalence :
      Reflexive U R -> Symmetric U R -> Transitive U R -> Equivalence U R.Inductive Equivalence (U : Set) (R : Relation U) : Prop :=
    Definition_of_equivalence :
      Reflexive U R -> Symmetric U R -> Transitive U R -> Equivalence U R.Definition Negation (U : Set) (R : Relation U) : Relation U :=
  fun x y : U => ~ R x y.

(* Specifications: *)
Theorem Sym_imp_NegSym : forall (U : Set) (R : Relation U), Symmetric U R -> Symmetric U (Negation U R).