O = Intersect(xAxis, yAxis)
Γ = Circle(O, 1)
Xa = Point(Γ)
Xb = Point(Γ)
Xc = Point(Γ)
XbXc = Segment(Xc, Xb)
XaXb = Segment(Xb, Xa)
XaXc = Segment(Xa, Xc)
Ya = Mirror(Xa, O)
Yb = Mirror(Xb, O)
Yc = Mirror(Xc, O)
ax = OrthogonalLine(Xa, XbXc)
A = Mirror(Xa, OrthogonalLine[O, ax])
bx = OrthogonalLine(Xb, XaXc)
cx = OrthogonalLine(Xc, XaXb)
B = Mirror(Xb, OrthogonalLine[O, bx])
C = Mirror(Xc, OrthogonalLine[O, cx])
AB = Segment(A, B)
BC = Segment(B, C)
AC = Segment(A, C)
jbc = Line(Ya, XbXc)
jab = Line(Yc, XaXb)
jac = Line(Yb, XaXc)
Jc = Intersect(jbc, jac)
Ja = Intersect(jac, jab)
Jb = Intersect(jbc, jab)
f = Segment(Ya, Xa)
g = Segment(Xc, Yc)
h = Segment(Xb, Yb)
I = Intersect(cx, ax)