Definition gHalfA A' O' B' A O B := exists P, HalfA P A O B /\ CongA A' O' B' A O P.

(* Specifications: *)
Lemma ghalfa_distincts : forall A' O' B' A O B, gHalfA A' O' B' A O B -> O' <> A' /\ O' <> B' /\ O <> A /\ O <> B.
Lemma halfa__ghalfa : forall P A O B, HalfA P A O B -> gHalfA A O P A O B.
Lemma ghalfa_left_comm : forall A' O' B' A O B, gHalfA A' O' B' A O B -> gHalfA B' O' A' A O B.
Lemma ghalfa_right_comm : forall A' O' B' A O B, gHalfA A' O' B' A O B -> gHalfA A' O' B' B O A.
Lemma ghalfa_comm : forall A' O' B' A O B, gHalfA A' O' B' A O B -> gHalfA B' O' A' B O A.
Lemma ghalfa_exists : forall A O B, ~ Bet A O B -> exists A' O' B', gHalfA A' O' B' A O B.
Lemma ghalfa__suma : forall A' O' B' A O B, gHalfA A' O' B' A O B -> SumA A' O' B' A' O' B' A O B.
Lemma ghalfa__acute : forall A' O' B' A O B, gHalfA A' O' B' A O B -> Acute A' O' B'.
Lemma ghalfa_chara : forall A' O' B' A O B, gHalfA A' O' B' A O B <-> (Acute A' O' B' /\ SumA A' O' B' A' O' B' A O B).
Lemma ghalfa__out : forall A O B, gHalfA A O B A O B -> Out O A B.
Lemma ghalfa_preserves_lta : forall A B C X Y Z A' B' C' X' Y' Z', gHalfA A' B' C' A B C -> gHalfA X' Y' Z' X Y Z -> LtA A B C X Y Z -> LtA A' B' C' X' Y' Z'.
Lemma ghalfa_preserves_conga_1 : forall A B C A' B' C' X Y Z X' Y' Z', gHalfA X Y Z A B C -> gHalfA X' Y' Z' A' B' C' -> CongA X Y Z X' Y' Z' -> CongA A B C A' B' C'.
Lemma ghalfa_preserves_conga_2 : forall A B C A' B' C' X Y Z X' Y' Z', gHalfA X Y Z A B C -> gHalfA X' Y' Z' A' B' C' -> CongA A B C A' B' C' -> CongA X Y Z X' Y' Z'.
Lemma ghalfa2__conga_1 : forall A B C A' B' C' A'' B'' C'', gHalfA A B C A' B' C' -> gHalfA A B C A'' B'' C'' -> CongA A' B' C' A'' B'' C''.
Lemma ghalfa2__conga_2 : forall A B C A' B' C' A'' B'' C'', gHalfA A' B' C' A B C -> gHalfA A'' B'' C'' A B C -> CongA A' B' C' A'' B'' C''.
Lemma conga2_ghalfa__ghalfa : forall A B C A' B' C' D E F D' E' F', CongA A B C D E F -> CongA A' B' C' D' E' F' -> gHalfA A B C A' B' C' -> gHalfA D E F D' E' F'.
Lemma ghalfa_out4__ghalfa : forall A B C D E F A' C' D' F', Out B A' A -> Out B C' C -> Out E D' D -> Out E F' F -> gHalfA A B C D E F -> gHalfA A' B C' D' E F'.
Lemma suma_preserves_ghalfa : forall A B C D E F X Y Z A' B' C' D' E' F' X' Y' Z', Acute X Y Z -> SumA A B C D E F X Y Z -> SumA A' B' C' D' E' F' X' Y' Z' -> gHalfA A B C A' B' C' -> gHalfA D E F D' E' F' -> gHalfA X Y Z X' Y' Z'.
Lemma acute_ghalfa2_sams_suma2__ghalfa456 : forall A B C D E F X Y Z A' B' C' D' E' F' X' Y' Z', SAMS A' B' C' D' E' F' -> Acute D E F -> SumA A B C D E F X Y Z -> SumA A' B' C' D' E' F' X' Y' Z' -> gHalfA A B C A' B' C' -> gHalfA X Y Z X' Y' Z' -> gHalfA D E F D' E' F'.
Lemma acute_ghalfa2_sams_suma2__ghalfa123 : forall A B C D E F X Y Z A' B' C' D' E' F' X' Y' Z', SAMS A' B' C' D' E' F' -> Acute A B C -> SumA A B C D E F X Y Z -> SumA A' B' C' D' E' F' X' Y' Z' -> gHalfA D E F D' E' F' -> gHalfA X Y Z X' Y' Z' -> gHalfA A B C A' B' C'.
Lemma halfa_perp__os : forall P A O B T, HalfA P A O B -> Perp O P T O -> OS O T P A.
Lemma halfa_perp__os2 : forall P A O B T, HalfA P A O B -> Perp O P T O -> OS O T P A /\ OS O T P B.