B = Point(xAxis)
A = Point(xAxis)
a = Line(B, A)
b = Segment(B, A)
O = Midpoint(b)
c = Circle(O, A)
e = LineBisector(b)
C = Intersect(c, e, 2.0)
D = Intersect(c, e, 1.0)
f = Segment(O, C)
F = Point(f)
g = Segment(O, F)
G = Mirror(F, O)
d = Line(F, a)
d' = Line(G, a)
G' = Mirror(G, F)
Δ = Line(G', d)
F' = Mirror(F, G)
Δ' = Line(F', d')
H = Point(c)
h = Line(O, H)
I = Mirror(H, a)
i = Line(H, I)
α = Angle(A, O, H)
J = Point(a)
j = Segment(A, J)
c' = Circle(O, J)
L = Intersect(c', i, 2.0)
M = Intersect(c', e, 1.0)
k = Line(M, H)
K = Intersect(c', k, 2.0)
P = Intersect(Δ, k)
Q = Intersect(d, k)
R = Intersect(d', k)
S = Intersect(Δ', k)
T = Intersect(c', d', 1.0)
U = Intersect(Δ', i)
V = Intersect(c', Δ', 1.0)
X = Point(Δ')
l = Segment(U, X)
m = Line(X, k)
Z = Intersect(d, m)
Y = Intersect(d', m)
W = Intersect(Δ, m)
n = OrthogonalLine(X, Δ)
A' = Intersect(d, n)
p = Line(A', k)
B' = Intersect(Δ, p)
q = Segment(B', P)
r = Segment(P, Q)
s = Segment(Q, A')
t = Segment(A', B')
poly1, a_1, r_1, s_1, b_1 = Polygon(Y, R, S, X)
poly2, b', p_1, q_1, a' = Polygon(B', P, Q, A')
c_1 = CircleArc(O, K, L)
e_1 = CircleArc(O, H, I)
f_1 = Segment(K, H)
g_1 = Segment(I, L)