Proof with finish.
intros.
Name x the symmetric of P wrt Q.
assert_all.
assert (~ Col A P C) by (intro; search_contradiction).
assert_diffs.
assert (Parallelogram_strict A P C x) by (apply mid_plgs with Q;finish).
assert_all.
assert_paras_perm.
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 H23.
treat_equalities.
search_contradiction.
assert_paras_perm.
assert_pars_perm.
assert (Par P Q A B) by (assert_diffs; apply par_col_par_2 with x; finish).
split.
apply par_not_col_strict with x...
intro.
assert_cols_perm.
apply H.
ColR.
assert_congs_perm;split;eCong.
Qed.

(* Specifications: *)
Lemma triangle_par_mid : forall A B C P Q,
~ Col A B C ->
Midpoint P B C ->
Par A B Q P ->
Col Q A C ->
Midpoint Q A C.
Lemma triangle_mid_par_strict_cong_1 : forall A B C P Q R,
~Col A B C ->
Midpoint P B C ->
Midpoint Q A C ->
Midpoint R A B ->
Par_strict A B Q P  /\ Cong A R P Q.
Lemma triangle_mid_par_strict_cong_2 : forall A B C P Q R,
~Col A B C ->
Midpoint P B C ->
Midpoint Q A C ->
Midpoint R A B ->
Par_strict A B Q P  /\ Cong B R P Q.
Lemma triangle_mid_par_strict_cong_simp :
forall A B C P Q,
~ Col A B C ->
Midpoint P B C ->
Midpoint Q A C ->
Par_strict A B Q P.
Lemma triangle_mid_par_strict_cong : forall A B C P Q R,
~Col A B C ->
Midpoint P B C ->
Midpoint Q A C ->
Midpoint R A B ->
Par_strict A B Q P /\ Par_strict A C P R /\ Par_strict 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.