Section Archimedes_for_angles.
Context `{TnEQD:Tarski_neutral_dimensionless_with_decidable_point_equality}.

(* Specifications: *)
Lemma grada_distincts : forall A B C D E F,
GradA A B C D E F ->
A <> B /\ C <> B /\ D <> E /\ F <> E.
Lemma conga2_grada__grada : forall A B C D E F A' B' C' D' E' F',
GradA A B C D E F ->
CongA A B C A' B' C' -> CongA D E F D' E' F' ->
GradA A' B' C' D' E' F'.
Lemma grada__lea : forall A B C D E F, GradA A B C D E F -> LeA A B C D E F.
Lemma grada_out__out : forall A B C D E F,
Out E D F -> GradA A B C D E F ->
Out B A C.
Lemma grada2_sams_suma__grada : forall A B C D E F G H I K L M,
GradA A B C D E F -> GradA A B C G H I ->
SAMS D E F G H I -> SumA D E F G H I K L M ->
GradA A B C K L M.
Lemma gradaexp__grada : forall A B C D E F,
GradAExp A B C D E F -> GradA A B C D E F.
Lemma acute_archi_aux : forall O A B C D E,
Per O A B -> O <> A -> B <> A -> C <> D -> D <> E ->
Bet A C D -> Bet C D E -> Bet D E B -> CongA C O D D O E ->
Lt C D D E.
Lemma acute_archi_aux1 : forall O A0 A1 B P Q R,
Per O A0 B -> B <> A0 -> Bet A0 A1 B ->
GradA A0 O A1 P Q R -> A0 <> A1 ->
LeA A0 O B P Q R \/ exists A, Bet A0 A1 A /\ Bet A0 A B /\ CongA P Q R A0 O A.
Lemma acute_archi_aux2 : forall O A0 A1 B C,
Per O A0 B -> O <> A0 -> B <> A0 ->
Bet A0 A1 B -> A0 <> A1 -> Grad A0 A1 C ->
exists P, exists Q, exists R, GradA A0 O A1 P Q R /\ (LeA A0 O B P Q R \/
exists A', Bet A0 A1 A' /\ Bet A0 A' B /\ CongA P Q R A0 O A' /\ Le A0 C A0 A' /\
exists A, Bet A0 A A' /\ CongA A O A' A0 O A1 /\ Le A0 A1 A A').
Lemma archi_in_acute_angles :
archimedes_axiom ->
forall A B C D E F,
~ Col A B C -> Acute D E F ->
exists P Q R, GradA A B C P Q R /\ LeA D E F P Q R.
Lemma angles_archi_aux :
forall A B C D E F G H I,
GradA A B C D E F -> GradA A B C G H I -> ~ SAMS D E F G H I ->
exists P Q R, GradA A B C P Q R /\ ~ SAMS P Q R A B C.
Lemma angles_archi_aux1 :
archimedes_axiom ->
forall A B C D E F,
~ Col A B C -> ~ Bet D E F ->
exists P Q R, GradA A B C P Q R /\ (LeA D E F P Q R \/ ~ SAMS P Q R A B C).
(** Inspired by Hartshorne's demonstration of Lemma 35.1 in Geometry Euclid and Beyond *)
Lemma archi_in_angles :
archimedes_axiom ->
forall A B C D E F,
~ Col A B C -> D <> E -> F <> E ->
exists P Q R, GradA A B C P Q R /\ (LeA D E F P Q R \/ ~ SAMS P Q R A B C).
(** If Archimedes' postulate holds, every nondegenerate angle can be repeated until exceeding 180° *)
Lemma archi__grada_destruction :
archimedes_axiom ->
forall A B C,
~ Col A B C ->
exists P Q R, GradA A B C P Q R /\ ~ SAMS P Q R A B C.
Lemma gradaexp_destruction_aux : forall A B C P Q R,
GradA A B C P Q R ->
exists S T U, GradAExp A B C S T U /\ (Obtuse S T U \/ LeA P Q R S T U).
(** If Archimedes' postulate holds, every nondegenerate angle can be doubled until exceeding 90° *)
Lemma archi__gradaexp_destruction :
archimedes_axiom ->
forall A B C,
~ Col A B C ->
exists P Q R, GradAExp A B C P Q R /\ Obtuse P Q R.