Require Export GeoCoq.Axioms.tarski_axioms.
(** This proves that between_identity is independent from other axioms of neutral geometry. *)
Section between_identity_independent.
Inductive Point :=
P0 | P1 | P2 | P3.
Definition Bet (A B C : Point) :=
A = B \/ B = C \/ A = C.
Definition Cong (A B C D : Point) :=
(A = B /\ C = D) \/ (A <> B /\ C <> D).

(* Specifications: *)
Lemma not_between_identity : ~ (forall A B, Bet A B A -> A=B).
Lemma cong_pseudo_reflexivity : forall A B, Cong A B B A.
Lemma cong_identity : forall A B C, Cong A B C C -> A = B.
Lemma cong_inner_transitivity : forall A B C D E F,
Cong A B C D -> Cong A B E F -> Cong C D E F.
Lemma inner_pasch : forall A B C P Q,
Bet A P C -> Bet B Q C ->
exists x, Bet P x B /\ Bet Q x A.
Lemma five_segment : forall A A' B B' C C' D D',
Cong A B A' B' ->
Cong B C B' C' ->
Cong A D A' D' ->
Cong B D B' D' ->
Bet A B C -> Bet A' B' C' -> A <> B -> Cong C D C' D'.
Lemma point_eq_dec : forall A B : Point, A=B \/ A<>B.
Lemma segment_construction : forall A B C D,
exists E, Bet A B E /\ Cong B E C D.
Lemma lower_dim : exists A, exists B, exists C, ~ (Bet A B C \/ Bet B C A \/ Bet C A B).
Lemma cong_sym : forall A B C D, Cong A B C D -> Cong C D A B.
Lemma cong_aux : forall A, Cong A P0 A P1 -> A = P2 \/ A = P3.
Lemma cong_aux_2 : forall A, Cong A P0 A P2 -> A = P1 \/ A = P3.
Lemma cong_aux_3 : forall A, Cong A P1 A P2 -> A = P0 \/ A = P3.
Lemma cong_aux_4 : forall A, Cong A P0 A P3 -> A = P1 \/ A = P2.
Lemma cong_aux_5 : forall A, Cong A P1 A P3 -> A = P0 \/ A = P2.
Lemma cong_aux_6 : forall A, Cong A P2 A P3 -> A = P0 \/ A = P1.
Lemma upper_dim : forall A B C P Q ,
P <> Q -> Cong A P A Q -> Cong B P B Q -> Cong C P C Q ->
(Bet A B C \/ Bet B C A \/ Bet C A B).
Lemma not_bet_diff : forall A B C,
~ (Bet A B C \/ Bet B C A \/ Bet C A B) -> A <> B /\ B <> C /\ A <> C.
Lemma euclid : forall A B C,
~ (Bet A B C \/ Bet B C A \/ Bet C A B) -> exists CC, Cong A CC B CC /\ Cong A CC C CC.