Proof with finish.
intros.
elim (eq_dec_points A C); intro.
assert_all.
split; try eCong.
perm_apply (col_par)...
elim (eq_dec_points B C); intro.
assert_all.
split; try eCong.
perm_apply (col_par)...
elim (eq_dec_points A P); intro.
assert_all.
assert (Col A B Q) by ColR.
split.
perm_apply (col_par).
assert_congs_perm.
split; eCong.
Name x the symmetric of P wrt Q.
elim (eq_dec_points P x); intro.
treat_equalities; intuition.
assert_cols.
assert (Parallelogram A P C x) by (apply mid_plg_1 with Q;finish).
assert_all.
assert_pars_perm.
assert (Cong A x B P) by eCong.
assert (Par A x B P) by (apply par_col2_par with P C; finish).
assert (HElim : Parallelogram A x B P \/ Parallelogram A x P B) by (apply par_cong_plg_2; assumption).
induction HElim.
Name M the intersection of the diagonals (A B) and (x P) of the parallelogram H19.
treat_equalities.
search_contradiction.
assert_paras_perm.
assert_pars_perm.
assert (Par P Q A B) by (apply par_col_par_2 with x; finish).
assert_congs_perm.
repeat split; try eCong...
Qed.

(* Specifications: *)
Lemma triangle_mid_par_flat_cong_1 : forall A B C P Q R,
B <> A ->
Col A B C ->
Midpoint P B C ->
Midpoint Q A C ->
Midpoint R A B ->
Par A B Q P  /\ Cong A R P Q.
Lemma triangle_mid_par_flat_cong_2 : forall A B C P Q R,
B <> A ->
Col A B C ->
Midpoint P B C ->
Midpoint Q A C ->
Midpoint R A B ->
Par A B Q P /\ Cong B R P Q.
Lemma triangle_mid_par_flat_cong : forall A B C P Q R,
B <> A ->
C <> A ->
C <> B ->
Col A B C ->
Midpoint P B C ->
Midpoint Q A C ->
Midpoint R A B ->
Par A B Q P /\ Par A C P R /\ Par B C Q R /\
Cong A R P Q /\ Cong B R P Q /\ Cong A Q P R /\ Cong C Q P R /\ Cong B P Q R /\ Cong C P Q R.