Pythagoras Theorem

A = (0, 0)
B = (20, 0)
a = Segment(A, B)
b = OrthogonalLine(A, a)
C = Point(b)
poly1, b_1, c, a_1 = Polygon(C, A, B)
poly2, d, e, f, g, D, E = Polygon(A, C, 4)
poly3, h, i, j, k, F, G = Polygon(B, A, 4)
poly4, l, m, n, p, H, I = Polygon(C, B, 4)
J = (-16.059783986570512, 8.935416663668393)
q = Line(J, p)
r = Line(J, n)
K = Intersect(b, q)
L = Intersect(r, g)
poly5, d_1, c_1, k_1, j_1 = Polygon(D, C, K, J)
poly6, j_2, d_2, e_1 = Polygon(D, E, J)
poly7, j_3, e_2, l_1 = Polygon(E, L, J)
poly8, l_2, j_4, k_2, a_2 = Polygon(L, J, K, A)
poly10, d_4, c_2, k_3, j_6 = Polygon(D, C, K, J)
poly11, j_7, l_3, a_3, k_4 = Polygon(J, L, A, K)
poly12, e_4, j_8, l_4 = Polygon(J, L, E)
poly9, e_3, d_3, j_5 = Polygon(D, J, E)
transition = 0 (slider from 0 to 1, step 0.01)
M: J + (transition * (C - J))
N: J + (transition * (B - J))
O: J + (transition * (H - J))
P: J + (transition * (I - J))
s = Circle(H, Segment[D, J])
Q = Intersect(s, n, 1)
R: B + (transition * (Q - B))
u = Vector(J, M)
v = Vector(J, N)
w = Vector(J, O)
t = Vector(J, P)
u_1 = Vector(B, R)
D' = Translate(D, v)
C' = Translate(C, v)
K' = Translate(K, v)
J' = Translate(J, v)
poly10', d', c', k', j' = Polygon(D', C', K', J')
J'_1 = Translate(J, u)
L' = Translate(L, u)
A' = Translate(A, u)
K'_1 = Translate(K, u)
poly11', j'_1, l', a', k'_1 = Polygon(J'_1, L', A', K'_1)
E' = Translate(E, t)
L'_1 = Translate(L, t)
J'_2 = Translate(J, t)
poly7', j'_2, e', l'_1 = Polygon(E', L'_1, J'_2)
D'_1 = Translate(D, w)
J'_3 = Translate(J, w)
E'_1 = Translate(E, w)
poly9', e'_1, d'_1, j'_3 = Polygon(D'_1, J'_3, E'_1)
poly3' = Translate(poly3, u_1)
S = Point(d)
T = Intersect(d, l)
poly13, f_1, g_1, h_1, i_1, U, V = Polygon(S, T, 4)
W = Intersect(l, m)
poly14, m_1, n_1, p_1, q_1, Z, A_1 = Polygon(W, S, 4)