(* Julien Narboux *)
(* Formalization of *)
(* Tarski's axiomatic *)
Require Export Ch05_between_transitivity_le.
(** The predicate out P A B informally means that P is on the line A B outside the segment A B. *)
Definition out := fun P A B => A<>P /\ B<>P /\ (Bet P A B \/ Bet P B A).
Proof with Tarski.
intros.
unfold iff;split;intro.
unfold out;repeat split;auto.
eapply l5_2;eauto;sTarski.
unfold out in H3.
decompose [and] H3.
elim H7;intro;Between.
Qed.
Proof with Tarski.
intros.
assert (exists C, Bet A P C /\ P<>C)...
DecompExAnd H0 C.
assert (Bet B P C <-> out P A B).
eapply l6_2;unfold out in H;intuition.
repeat split.
unfold out in H;intuition.
unfold out in H;intuition.
exists C;repeat split;eauto.
intuition.
Qed.
Proof with Tarski.
intros.
unfold out;repeat split.
intuition.
intuition.
decompose [and] H.
DecompExAnd H3 C.
eapply l5_2;try apply H4;sTarski.
Qed.
Proof with Tarski.
intros.
unfold out in H.
decompose [and] H;clear H.
split.
unfold Col;intuition.
intuition.
assert (A = P).
eTarski.
intuition.
assert (B = P).
assert (Bet B P A);Between.
eTarski.
intuition.
Qed.
Proof with Tarski.
intros.
unfold out.
intuition.
subst A.
assert (Bet P P B)...
subst B.
assert (Bet A P P)...
unfold Col in H0;intuition.
Qed.
(** out reflexivity. *)

Lemma l6_5 : forall P A, A<>P -> out P A A.