Proof with finish.
intros.
assert_diffs.
Name I the midpoint of B and C.
Name J the midpoint of A and C.
elim (intersection_two_medians_exist A B C I J H H1 H4); intros G HG; spliter.
exists G; unfold unique; unfold is_gravity_center; repeat split...
exists I;  exists J; do 3 (split; finish).
intros G' HG'; spliter; decompose [ex and] H8;clear H8.
assert_all.
apply l6_21 with A x B x0...
intro;search_contradiction.
show_distinct' B x0...
Qed.
Ltac intersection_medians G A B C I J H1 H2 H3 :=
let T := fresh in assert(T:= intersection_two_medians_exist A B C I J H1 H2 H3);
ex_and T G.
Tactic Notation "Name" ident(G) "the" "intersection" "of" "the" "medians" "(" ident(A) ident(I) ")" "which" "is" "a" "median" "since" ident(H2) "and" "(" ident(B) ident(J) ")" "which" "is" "a" "median" "since" ident(H3) "of" "the" "non-flat" "triangle" ident(A) ident(B) ident(C) ident(H1) :=
intersection_medians G A B C I J H1 H2 H3.

(* Specifications: *)
Lemma three_medians_intersect:
forall A B C I J K,
~Col A B C ->
Midpoint I B C ->
Midpoint J A C ->
Midpoint K A B ->
exists G, Col G A I /\ Col G B J /\Col G C K.