Require Export GeoCoq.Elements.OriginalProofs.lemma_ABCequalsCBA.
Require Export GeoCoq.Elements.OriginalProofs.lemma_equalanglestransitive.

Section Euclid.

Context `{Ax:euclidean_neutral_ruler_compass}.

Lemma lemma_equalanglesflip : 
   forall A B C D E F, 
   CongA A B C D E F ->
   CongA C B A F E D.
Proof.
(* Goal: forall (A B C D E F : @Point Ax0) (_ : @CongA Ax0 A B C D E F), @CongA Ax0 C B A F E D *)
intros.
(* Goal: @CongA Ax0 C B A F E D *)
assert (nCol D E F) by (conclude lemma_equalanglesNC).
(* Goal: @CongA Ax0 C B A F E D *)
assert (CongA D E F A B C) by (conclude lemma_equalanglessymmetric).
(* Goal: @CongA Ax0 C B A F E D *)
assert (nCol A B C) by (conclude lemma_equalanglesNC).
(* Goal: @CongA Ax0 C B A F E D *)
assert (~ Col C B A).
(* Goal: not (@Col Ax0 C B A) *)
(* Goal: @CongA Ax0 C B A F E D *)
 {
(* Goal: not (@Col Ax0 C B A) *)
 intro.
(* Goal: False *)
 assert (Col A B C) by (forward_using lemma_collinearorder).
(* Goal: False *)
 contradict.
 }
(* Goal: @CongA Ax0 C B A F E D *)
assert (CongA C B A A B C) by (conclude lemma_ABCequalsCBA).
(* Goal: @CongA Ax0 C B A F E D *)
assert (CongA C B A D E F) by (conclude lemma_equalanglestransitive).
(* Goal: @CongA Ax0 C B A F E D *)
assert (CongA D E F F E D) by (conclude lemma_ABCequalsCBA).
(* Goal: @CongA Ax0 C B A F E D *)
assert (CongA C B A F E D) by (conclude lemma_equalanglestransitive).
(* Goal: @CongA Ax0 C B A F E D *)
close.
Qed.

End Euclid.


