Require Export GeoCoq.Tarski_dev.Ch10_line_reflexivity.
Section T10_1.
Context `{TnEQD:Tarski_neutral_dimensionless_with_decidable_point_equality}.

(* Specifications: *)
Lemma cop__cong_on_bissect : forall A B M P X,
Coplanar A B X P -> Midpoint M A B -> Perp_at M A B P M -> Cong X A X B ->
Col M P X.
Lemma cong_cop_mid_perp__col : forall A B M P X,
Coplanar A B X P -> Cong A X B X -> Midpoint M A B -> Perp A B P M -> Col M P X.
Lemma cop__image_in_col : forall A B P P' Q Q' M,
Coplanar A B P Q -> ReflectL_at M P P' A B -> ReflectL_at M Q Q' A B ->
Col M P Q.
Lemma l10_10_spec : forall A B P Q P' Q',
ReflectL P' P A B -> ReflectL Q' Q A B ->
Cong P Q P' Q'.
Lemma l10_10 : forall A B P Q P' Q',
Reflect P' P A B -> Reflect Q' Q A B ->
Cong P Q P' Q'.
Lemma image_preserves_bet : forall A B C A' B' C' X Y,
ReflectL A A' X Y -> ReflectL B B' X Y -> ReflectL C C' X Y ->
Bet A B C ->
Bet A' B' C'.
Lemma image_gen_preserves_bet : forall A B C A' B' C' X Y,
Reflect A A' X Y ->
Reflect B B' X Y ->
Reflect C C' X Y ->
Bet A B C ->
Bet A' B' C'.
Lemma image_preserves_col : forall A B C A' B' C' X Y,
ReflectL A A' X Y -> ReflectL B B' X Y -> ReflectL C C' X Y ->
Col A B C ->
Col A' B' C'.
Lemma image_gen_preserves_col : forall A B C A' B' C' X Y,
Reflect A A' X Y -> Reflect B B' X Y -> Reflect C C' X Y ->
Col A B C ->
Col A' B' C'.
Lemma image_gen_preserves_ncol : forall A B C A' B' C' X Y,
Reflect A A' X Y -> Reflect B B' X Y -> Reflect C C' X Y ->
~ Col A B C ->
~ Col A' B' C'.
Lemma image_gen_preserves_inter : forall A B C D I A' B' C' D' I' X Y,
Reflect A A' X Y -> Reflect B B' X Y -> Reflect C C' X Y -> Reflect D D' X Y ->
~ Col A B C -> C <> D ->
Col A B I -> Col C D I -> Col A' B' I' -> Col C' D' I' ->
Reflect I I' X Y.
Lemma intersection_with_image_gen : forall A B C A' B' X Y,
Reflect A A' X Y -> Reflect B B' X Y ->
~ Col A B A' -> Col A B C -> Col A' B' C ->
Col C X Y.
Lemma image_preserves_midpoint :
forall A B C A' B' C' X Y,
ReflectL A A' X Y -> ReflectL B B' X Y -> ReflectL C C' X Y ->
Midpoint A B C ->
Midpoint A' B' C'.
Lemma image_spec_preserves_per : forall A B C A' B' C' X Y,
ReflectL A A' X Y -> ReflectL B B' X Y -> ReflectL C C' X Y ->
Per A B C ->
Per A' B' C'.
Lemma image_preserves_per : forall A B C A' B' C' X Y,
Reflect A A' X Y -> Reflect B B' X Y -> Reflect C C' X Y ->
Per A B C ->
Per A' B' C'.
Lemma l10_12 : forall A B C A' B' C',
Per A B C -> Per A' B' C' ->
Cong A B A' B' -> Cong B C B' C' ->
Cong A C A' C'.
Lemma cong4_cop2__eq : forall A B C P Q, ~ Col A B C ->
Cong A P B P -> Cong A P C P -> Coplanar A B C P ->
Cong A Q B Q -> Cong A Q C Q -> Coplanar A B C Q ->
P = Q.
Lemma l10_16 : forall A B C A' B' P,
~ Col A B C -> ~ Col A' B' P -> Cong A B A' B' ->
exists C', Cong_3 A B C A' B' C' /\ OS  A' B' P C' .
Lemma cong_cop_image__col : forall A B P P' X,
P <> P' -> Reflect P P' A B -> Cong P X P' X -> Coplanar A B P X ->
Col A B X.
Lemma cong_cop_per2_1 :
forall A B X Y, A <> B -> Per A B X -> Per A B Y ->
Cong B X B Y -> Coplanar A B X Y -> X = Y \/ Midpoint B X Y.
Lemma cong_cop_per2 : forall A B X Y,
A <> B -> Per A B X -> Per A B Y -> Cong B X B Y -> Coplanar A B X Y ->
X = Y \/ ReflectL X Y A B.
Lemma cong_cop_per2_gen : forall A B X Y,
A <> B -> Per A B X -> Per A B Y -> Cong B X B Y -> Coplanar A B X Y ->
X = Y \/ Reflect X Y A B.
Lemma ex_perp_cop : forall A B C P,
A <> B -> exists Q, Perp A B Q C /\ Coplanar A B P Q.
Lemma hilbert_s_version_of_pasch_aux : forall A B C I P, Coplanar A B C P ->
~ Col A I P -> ~ Col B C P -> Bet B I C -> B <> I -> I <> C -> B <> C ->
exists X, Col I P X /\
((Bet A X B /\ A <> X /\ X <> B /\ A <> B) \/
(Bet A X C /\ A <> X /\ X <> C /\ A <> C)).
Lemma hilbert_s_version_of_pasch : forall A B C P Q, Coplanar A B C P ->
~ Col C Q P -> ~ Col A B P -> BetS A Q B ->
exists X, Col P Q X /\ (BetS A X C \/ BetS B X C).
Lemma two_sides_cases : forall O P A B,
~ Col O A B -> OS O P A B -> TS O A P B \/ TS O B P A.
Lemma not_par_two_sides :
forall A B C D I, C <> D -> Col A B I -> Col C D I -> ~ Col A B C ->
exists X, exists Y, Col C D X /\ Col C D Y /\ TS A B X Y.
Lemma cop_not_par_other_side :
forall A B C D I P, C <> D -> Col A B I -> Col C D I -> ~ Col A B C -> ~ Col A B P ->
Coplanar A B C P ->
exists Q, Col C D Q /\ TS A B P Q.
Lemma cop_not_par_same_side :
forall A B C D I P, C <> D -> Col A B I -> Col C D I -> ~ Col A B C -> ~ Col A B P ->
Coplanar A B C P ->
exists Q, Col C D Q /\ OS A B P Q.