(* Julien Narboux *)
(* Formalization of *)
(* Tarski's axiomatic *)
Require Export  general_tactics.
(** We use the axioms used in the book of Schwabäuser, Szmielew and Tarski. *)
(** We assume that we have a set of points. This axiomatic is based only on points, lines are implicit. *)
Parameter Point : Set.
(* Here we use classical logic, for a intuitionnist approach use von Plato axiomatic for instance. In this development, the classic axiom is mainly applied to formulas of the form : - Col A B C, - A=B *)
Require Export Classical.
(** Tarski's axiomatic is based on two predicates over points, one ternary and one quaternary. *)
(** Cong A B C D informally means that the distance AB is equal to the distance CD. *)
Parameter Cong : Point -> Point -> Point -> Point -> Prop.
(** Bet A B C, informally means that : A, B and C are on the same line B is between A and C. Note that they are not necessarily distinct. This is the difference between the Between predicate of Tarski and the BetweenH prdicate of Hilbert *)
Parameter Bet : Point -> Point -> Point -> Prop.
Definition Col (A B C : Point) : Prop :=
Bet A B C \/ Bet B C A \/ Bet C A B.
Ltac cases_col A B C := elim (classic (Col A B C));intros.
(** %\textbf{% Identity axiom for betweenness. %}% *)
(** %\textbf{% Reflexivity axiom for equidistance.%}% *)
(** %\textbf{% Identity axiom for equidistance.%}% *)
(** %\textbf{% Transitivity axiom for equidistance.%}% *)
(** %\textbf{% Pasch Axiom (Inner form).%}% *)
(** %\textbf{% Euclid Axiom.%}% *)
(** %\textbf{% Five segments axiom.%}% *)
(** %\textbf{% Axiom of segment construction.%}% *)

Axiom segment_construction : forall A B C D : Point,
exists E : Point, Bet A B E /\ Cong B E C D.