Proof with Tarski.
intros.
assert (exists X : Point, Col A B X /\ Perp A B C X).
eapply l8_18_existence...
DecompExAnd H1 X.
assert (Per A X C).
assert (Perp_in X A B C X).
eapply l8_15_1;auto.
unfold Perp_in in H1.
DecompAndAll.
apply H9;Tarski.
assert (HH:=H1).
unfold Per in H1.
DecompExAnd H1 C'.
let_symmetric C'' A C.
assert (exists P, is_midpoint P C' C'').
eapply l7_25.
unfold is_midpoint in H2.
decompose [and] H2.
eapply cong_transitivity with (C:=C) (D:=A).
2:apply H7.
sTarski.
DecompEx H1 P.
assert (Per X A P).
eapply l8_20_1.
apply HH.
apply l7_2.
apply H7.
Midpoint.
Midpoint.
show_distinct X C.
unfold is_midpoint in*;DecompAndAll.
intuition.
assert (A<>P).
eapply l8_20_2.
apply HH.
apply l7_2.
apply H7.
Midpoint.
Midpoint.
auto.
assert (exists T, Bet P T C /\ Bet A T X).
eapply l3_17 with (A:=C'') (A':=C');unfold is_midpoint in *;intuition.
DecompExAnd H10 T.
cases_equality A X.
exists P.
exists T.
treat_equalities.
repeat split;Tarski;Between.
unfold Perp.
assert (Perp_in A A B C A).
eapply l8_15_1;auto.
Tarski.
unfold Perp_in in H3.
decompose [and] H3;clear H3.
exists A.
unfold Perp_in;repeat split;Tarski;auto.
intros.
eapply H16;auto.
assert (Col A P C).
Col.
assert (Col A P V).
Col.
assert (Col A C V).
eapply col_transitivity_1;try apply H9;auto.
Col.
assert (Col A B T).
eapply col_transitivity_1.
apply H10.
unfold is_midpoint;intuition.
unfold is_midpoint;intuition.
exists P.
exists T.
repeat split;Between.
unfold Perp.
exists A.
eapply l8_13_2;auto.
Tarski.
Tarski.
exists X.
exists P.
repeat split.
Col.
Tarski.
auto.
auto.
auto.
Qed.

(* Specifications: *)
Lemma l8_21 : forall A B C,
A<> B ->  exists P, exists T, Perp A B P A /\ Col A B T /\ Bet C T P.