Section PythagoreanFun.
Context `{T2D:Tarski_2D}.
Context `{TE:@Tarski_euclidean Tn TnEQD}.
intros.
assert(~Col O E E').
unfold Prod in H0.
spliter.
unfold Ar2  in H0.
tauto.
assert(exists ME : Tpoint, Opp O E E' E ME).
apply(opp_exists O E E' H1 E); Col;
assert(HH:= opp_prod O E E').
ex_and H2 ME.
assert(HH:= opp_prod O E E' ME A B H3 H).
assert(Prod O E E' B ME A).
apply(opp_prod O E E' ME B A H3).
apply opp_comm; auto.
assert(Prod O E E' ME B A).
apply prod_comm; auto.
assert(HP:=(prod_assoc O E E' A ME B B A A2 HH H4)).
destruct HP.
apply H5.
assumption.
Qed.
(**********)

Lemma PythOK : forall O E E' A B C A2 B2 C2, PythRel O E E' A B C ->
Prod O E E' A A A2 ->
Prod O E E' B B B2 ->
Prod O E E' C C C2 ->
Sum O E E' A2 B2 C2.