src/HOL/ex/Pythagoras.thy
changeset 59190 3a594fd13ca4
child 61343 5b5656a63bd6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/HOL/ex/Pythagoras.thy	Sun Dec 28 15:42:34 2014 +1100
@@ -0,0 +1,32 @@
+(*  Title:      HOL/ex/Pythagoras.thy
+    Author:     Amine Chaieb
+*)
+
+header "The Pythagorean Theorem"
+
+theory Pythagoras
+imports Complex_Main
+begin
+
+text {* Expressed in real numbers: *}
+
+lemma pythagoras_verbose:
+  "((A1::real) - B1) * (C1 - B1) + (A2 - B2) * (C2 - B2) = 0 \<Longrightarrow> 
+  (C1 - A1) * (C1 - A1) + (C2 - A2) * (C2 - A2) =
+  ((B1 - A1) * (B1 - A1) + (B2 - A2) * (B2 - A2)) + (C1 - B1) * (C1 - B1) + (C2 - B2) * (C2 - B2)"
+  by algebra
+
+
+text {* Expressed in vectors: *}
+
+type_synonym point = "real \<times> real"
+
+lemma pythagoras: 
+  defines ort:"orthogonal \<equiv> (\<lambda>(A::point) B. fst A * fst B + snd A * snd B = 0)"
+       and vc:"vector \<equiv> (\<lambda>(A::point) B. (fst A  - fst B, snd A - snd B))"
+      and vcn:"vecsqnorm \<equiv> (\<lambda>A::point. fst A ^ 2 + snd A ^2)"
+ assumes o: "orthogonal (vector A B) (vector C B)"
+ shows "vecsqnorm(vector C A) = vecsqnorm(vector B  A) + vecsqnorm(vector C B)"
+   using o unfolding ort vc vcn by (algebra add: fst_conv snd_conv)
+ 
+ end
\ No newline at end of file