    Secondo teorema di Euclide
In un triangolo rettangolo il rettangolo costruito sulle proiezioni dei cateti sull'ipotenusa 
equivale al quadrato costruito sull'altezza relativa all'ipotenusa 
    ( muovi il punto  M  lungo il tragitto rosso )

A = (5.005272727272727, 3.287454545454547)
g = OrthogonalLine(A, yAxis)
c = OrthogonalLine(A, xAxis)
H = Intersect(c, xAxis)
h = Circle(A, H)
G = Intersect(h, g, 1.0)
i = OrthogonalLine(G, xAxis)
D = Intersect(i, xAxis)
B = Intersect(xAxis, yAxis)
d = Circle(H, B)
E = Intersect(d, c, 1.0)
e = OrthogonalLine(E, yAxis)
a = Line(B, A)
b = OrthogonalLine(A, a)
C = Intersect(b, xAxis)
f = OrthogonalLine(C, xAxis)
J = Intersect(f, g)
u = Vector(C, J)
F = Intersect(e, f)
L = Translate(F, u)
j = Line(E, L)
K = Intersect(j, g)
tragitto, t, a_1, b_1, c_1, d_1, e_1 = Polygon(F, L, K, G, K, L)
M = Point(tragitto)
P = If(y(M) ≟ y(K), Translate[J, Vector[K, M]], If[x(M) ≟ x(F), Translate[C, Vector[F, M]], J])
N = If(y(M) ≟ y(K), D, If[x(M) ≟ x(F), E, Translate[E, Vector[L, M]]])
k = Segment(B, A)
l = Segment(A, C)
m = Segment(A, H)
n = Segment(A, G)
p = Segment(G, D)
q = Segment(H, E)
quadrilatero, f_1, g_1, h_1, i_1 = Polygon(M, P, H, N)
r = Segment(E, F)
j_1 = Segment(H, D)
k_1 = Segment(B, C)
s = Segment(F, C)