(* 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.                *)
(****************************************************************************)
(****************************************************************************)
(*                               part1.v                                    *)
(*                                                                          *)
(* Congruence lemmas near the end slightly more explicit than in von Plato  *)
(****************************************************************************)

(* Specifications: *)
Theorem Uniqueness_of_constructed_lines :
forall (x : Segment) (l : Line),
Incident (origin x) l -> Incident (extremity x) l -> EqLn l (ln x).
Theorem Convergent_imp_distinct : forall l m : Line, ConLn l m -> DiLn l m.
Hint Resolve Convergent_imp_distinct.
Theorem Uniqueness_of_constructed_points :
forall (x : Twolines) (a : Point),
Incident a (line1 x) -> Incident a (line2 x) -> EqPt a (pt x).
Theorem cong_eqpt_apt :
forall (a b : Point) (l : Line), Apart a l -> EqPt a b -> Apart b l.
Theorem cong_eqln_apt :
forall (a : Point) (l m : Line), Apart a l -> EqLn l m -> Apart a m.
Theorem cong_eqpt_inc :
forall (a b : Point) (l : Line), Incident a l -> EqPt a b -> Incident b l.
Theorem cong_eqln_inc :
forall (a : Point) (l m : Line), Incident a l -> EqLn l m -> Incident a m.
Theorem cong_eqln_con :
forall l m n : Line, ConLn l m -> EqLn m n -> ConLn l n.
Theorem cong_eqln_par : forall l m n : Line, Par l m -> EqLn m n -> Par l n.
Theorem cong_eqpt_dipt :
forall a b c : Point, DiPt a b -> EqPt b c -> DiPt a c.
Theorem cong_eqln_diln :
forall l m n : Line, DiLn l m -> EqLn m n -> DiLn l n.
Theorem eqln_imp_par : forall l m : Line, EqLn l m -> Par l m.
Theorem cong_par_con : forall l m n : Line, ConLn l m -> Par m n -> ConLn l n.
Theorem sym_SPar : forall x y : Line, SPar x y -> SPar y x.
Hint Resolve sym_SPar.
Theorem cong_eqln_spar :
forall l m n : Line, SPar l m -> EqLn m n -> SPar l n.