Section GravityCenter.
Context `{TE:Tarski_euclidean}.
(** Center of gravity  # <applet name="ggbApplet" code="geogebra.GeoGebraApplet" archive="geogebra.jar" codebase="http://jars.geogebra.org/webstart/4.2/unsigned/" width="917" height="865"> <param name="ggbBase64" value="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" /> <param name="java_arguments" value="-Xmx1024m -Djnlp.packEnabled=true" /> <param name="cache_archive" value="geogebra.jar, geogebra_main.jar, geogebra_gui.jar, geogebra_cas.jar, geogebra_algos.jar, geogebra_export.jar, geogebra_javascript.jar, jlatexmath.jar, jlm_greek.jar, jlm_cyrillic.jar, geogebra_properties.jar" /> <param name="cache_version" value="4.2.47.0, 4.2.47.0, 4.2.47.0, 4.2.47.0, 4.2.47.0, 4.2.47.0, 4.2.47.0, 4.2.47.0, 4.2.47.0, 4.2.47.0, 4.2.47.0" /> <param name="showResetIcon" value="false" /> <param name="enableRightClick" value="false" /> <param name="errorDialogsActive" value="true" /> <param name="enableLabelDrags" value="false" /> <param name="showMenuBar" value="false" /> <param name="showToolBar" value="false" /> <param name="showToolBarHelp" value="false" /> <param name="showAlgebraInput" value="false" /> <param name="useBrowserForJS" value="true" /> <param name="allowRescaling" value="true" /> C'est une appliquette Java créée avec GeoGebra ( www.geogebra.org) - Il semble que Java ne soit pas installé sur votre ordinateur, merci d'aller sur www.java.com </applet> #  **)
Proof with finish.
intros.
assert_bets.
elim (inner_pasch A B C J I)...
intro G;intros.
exists G.
spliter;assert_cols;split...
Qed.
Proof with finish.
intros.
elim (intersection_two_medians_exist A B C I J H H0 H1); intros G HG; spliter.
exists G.
unfold unique.
assert_all.
repeat split...
intros G' HG'; spliter.
apply l6_21 with A I B J...
intro; search_contradiction.
show_distinct' B J...
Qed.
Definition is_gravity_center G A B C :=
~ Col A B C /\
exists I, exists J, Midpoint I B C /\ Midpoint J A C /\ Col G A I /\ Col G B J.
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.
Proof with assert_all.
intros.
assert_diffs.
Name G the intersection of the medians (A I)
which is a median since H0 and (B J)
which is a median since H1
of the non-flat triangle A B C H.
exists G; repeat split; try assumption.
Name D the symmetric of C wrt G.
assert_all.
show_distinct' A D.
permutation_intro_in_hyps.
assert (Par A D J G) by (apply (triangle_mid_par A D C G J H3 H14 H1)).
show_distinct' B G.
assert (Par G B A D)
by (perm_apply (par_col_par A D G J B)).
show_distinct' B D.
assert (Par B D I G) by (apply (triangle_mid_par B D C G I H104 H14 H0)).
show_distinct' A G.
assert (Par G A D B)
by (perm_apply (par_col_par B D G I A))...
show_distinct' D G.
assert (~ Col G A D)
by (intro; search_contradiction).
assert (Parallelogram G A D B)
by (apply (par_2_plg G A D B); finish).
Name Z the intersection of the diagonals (G D)
and (A B) of the parallelogram H17...
ColR.
Qed.
(* TODO put in assert_diffs ? *)
(** We don't have ratio so we express that AG=2/3 AA' using midpoints. *)

Lemma is_gravity_center_cases : forall A B C G,
is_gravity_center G A B C \/
is_gravity_center G A C B \/
is_gravity_center G B A C \/
is_gravity_center G B C A \/
is_gravity_center G C A B \/
is_gravity_center G C B A ->
is_gravity_center G A B C.