Proof with finish.
intros.
unfold TS in *.
assert (~ Col A P Q).
spliter.
assumption.
spliter.
clear H.
assert (P <> Q).
intro.
subst Q.
Col.
ex_and H6 T.
show_distinct A C.
intuition.
assert (T = M).
assert_bets.
assert_cols.
eapply l6_21 with P Q A C...
subst T.
repeat split...
induction(eq_dec_points C M).
subst M.
intuition.
intro.
clear H0.
assert (B <> R).
intro.
subst B.
unfold Out in H3.
spliter.
absurde.
assert (Col P R B) by ColR.
assert (Col P R A).
induction (eq_dec_points P B).
subst B.
assert_cols...
apply col_permutation_2.
eapply col_transitivity_2.
apply H0.
assert_cols...
Col.
induction (eq_dec_points P R).
subst R.
apply H4.
apply col_permutation_2.
eapply (col_transitivity_1 _ B).
assert_diffs;intuition.
apply col_permutation_4.
assumption.
assert_cols...
assert (Col P B A ).
eapply col_transitivity_1.
apply H13.
assumption.
assumption.
induction (eq_dec_points P B).
subst B.
apply H4.
apply col_permutation_2.
eapply (col_transitivity_1 _ R).
apply H0.
apply col_permutation_4.
assumption.
unfold Out in H3.
spliter.
unfold Col.
induction H16.
right; left.
assumption.
right;right.
Between.
apply H4.
apply col_permutation_2.
eapply col_transitivity_1.
apply H15.
Col.
assumption.
induction H3.
spliter.
induction H10.
double B M B'.
double R M R'.
assert (Bet B' C R').
eapply l7_15.
apply H11.
apply H1.
apply H12.
Between.
assert (exists X, Bet M X R' /\ Bet C X B).
eapply inner_pasch.
(* assert_bets. Between. *)
apply midpoint_bet.
apply H11.
apply between_symmetry.
assumption.
ex_and H14 X.
exists X.
split.
assert (Col P M R ).
eapply col_transitivity_1.
apply H.
Col.
Col.
assert (Col Q M R).
eapply (col_transitivity_1 _ P).
auto.
Col.
Col.
induction (eq_dec_points M X).
subst X.
assumption.
show_distinct M R'.
intuition.
assert (M <> R).
intro.
subst R.
eapply (symmetric_point_uniqueness) in H12.
apply H19.
apply H12.
apply l7_3_2.
apply col_permutation_2.
ColR.
Between.
assert (exists X, Bet B X C /\ Bet M X R).
eapply inner_pasch.
apply H10.
Between.
ex_and H11 X.
exists X.
induction (eq_dec_points M R).
subst R.
apply between_identity in H12.
subst X.
split; assumption.
induction (eq_dec_points R X).
subst X.
split; assumption.
split.
induction (eq_dec_points X M).
subst X.
assumption.
assert (Col P M R ).
eapply col_transitivity_1.
apply H.
Col.
Col.
assert (Col X P Q).
apply col_permutation_2.
ColR.
assumption.
assumption.
Qed.
(* Lemma sym_sym : forall A C A', Midpoint C A A' -> ReflectP A' A C. *)

(* Specifications: *)
Lemma mid_preserves_col : forall A B C M A' B' C',
Col A B C ->
Midpoint M A A' ->
Midpoint M B B' ->
Midpoint M C C' ->
Col A' B' C'.
Lemma per_mid_per : forall A B X Y M,
A <> B -> Per X A B ->
Midpoint M A B -> Midpoint M X Y ->
Cong A X B Y /\ Per Y B A.
Lemma sym_preserve_diff : forall A B M A' B',
A <> B -> Midpoint M A A' -> Midpoint M B B' -> A'<> B'.
Lemma l9_4_1_aux : forall P Q A C R S M,
Le S C R A ->
TS P Q A C -> Col R P Q -> Perp P Q A R -> Col S P Q ->
Perp P Q C S -> Midpoint M R S ->
(forall U C',Midpoint M U C' -> (Out R U A <-> Out S C C')).
Lemma per_col_eq : forall A B C, Per A B C -> Col A B C -> B <> C -> A = B.
Lemma l9_4_1 : forall P Q A C R S M,
TS P Q A C -> Col R P Q ->
Perp P Q A R -> Col S P Q ->
Perp P Q C S -> Midpoint M R S ->
(forall U C',Midpoint M U C' -> (Out R U A <-> Out S C C')).
Lemma mid_two_sides : forall A B M X Y,
Midpoint M A B -> ~ Col A B X -> Midpoint M X Y ->
TS A B X Y.
Lemma col_preserves_two_sides : forall A B C D X Y,
C <> D -> Col A B C -> Col A B D ->
TS A B X Y ->
TS C D X Y.
Lemma out_out_two_sides : forall A B X Y U V I,
A <> B ->
TS A B X Y ->
Col I A B -> Col I X Y ->
Out I X U -> Out I Y V ->
TS A B U V.
Lemma l9_4_2_aux : forall P Q A C R S U V, Le S C R A -> TS P Q A C -> Col R P Q -> Perp P Q A R -> Col S P Q ->
Perp P Q C S -> Out R U A -> Out S V C -> TS P Q U V.
Lemma l9_4_2 : forall P Q A C R S U V,
TS P Q A C -> Col R P Q -> Perp P Q A R -> Col S P Q ->
Perp P Q C S -> Out R U A -> Out S V C -> TS P Q U V.
Lemma l9_5 : forall P Q A C R B,
TS P Q A C -> Col R P Q -> Out R A B -> TS P Q B C.