Definition Tcircle : Type := Tpoint*Tpoint*Tpoint %type.Definition OnCirc P (C:Tcircle) := 
  match C with 
  (X,A,B) => tarski_axioms.Cong X P A B
  end.Definition CI (J:Tcircle) A C D := J=(A,C,D) /\ C<>D.Definition InCirc P (J:Tcircle) :=
   match J with
  (C,A,B) => 
   exists X Y, Definitions.BetS X C Y /\ tarski_axioms.Cong C Y A B /\
               tarski_axioms.Cong C X A B /\ Definitions.BetS X P Y
  end.Definition OutCirc P (J:Tcircle) :=
   match J with
  (C,A,B) => 
      exists X, Definitions.BetS C X P /\ tarski_axioms.Cong C X A B
 end.

(* Specifications: *)
Lemma on : forall A B C D J, CI J A C D /\ OnCirc B J -> tarski_axioms.Cong A B C D.
Lemma inside : forall A B C J P, CI J C A B /\ InCirc P J <-> exists X Y, CI J C A B /\ Definitions.BetS X C Y /\ tarski_axioms.Cong C Y A B /\ tarski_axioms.Cong C X A B /\ Definitions.BetS X P Y.
Lemma outside : forall A B C J P, CI J C A B /\ OutCirc P J <-> exists X, CI J C A B /\ Definitions.BetS C X P /\ tarski_axioms.Cong C X A B.
Lemma bet_cases : forall B C D1 D2, C<>B -> Definitions.BetS D1 B D2 -> Definitions.BetS D1 C D2 -> Definitions.BetS D1 B C \/ Definitions.BetS C B D2.
Lemma circle_line : circle_circle -> forall A B C K P Q, CI K C P Q -> InCirc B K -> A <> B -> exists X Y, Definitions.Col A B X /\ Definitions.Col A B Y /\ OnCirc X K /\ OnCirc Y K /\ Definitions.BetS X B Y.
Lemma circle_circle' : circle_circle -> forall C D F G J K P Q R S, CI J C R S -> InCirc P J -> OutCirc Q J -> CI K D F G -> OnCirc P K -> OnCirc Q K -> exists X, OnCirc X J /\ OnCirc X K.