a = Line((0, 0), (1, 0))

Tool: Half Plane Ray (command HalfPlaneRay)
Input: A, B
Output: f, F

A' = Mirror(A, Line[(0, 0), (1, 0)])
B' = Mirror(B, Line[(0, 0), (1, 0)])
b = Segment(A, A')
c = Segment(B, B')
C = Intersect(b, Line[(0, 0), (1, 0)])
D = Intersect(c, Line[(0, 0), (1, 0)])
d = Ray(C, D)
e = Circle(A, A', B)
F = Intersect(e, d)
f = CircumcircleArc(A, B, F)

Tool: Half Plane Line (command HalfPlaneLine)
Input: F, G
Output: k, I, H

g, H = HalfPlaneRay(F, G)
h, I = HalfPlaneRay(G, F)
k = CircumcircleArc(I, F, H)

Tool: Half Plane Segment (command HalfPlaneSegment)
Input: A, B
Output: f

b = LineBisector(A, B)
C = Intersect(b, Line[(0, 0), (1, 0)])
c = Circle(C, A)
d = Segment(A, B)
D = Intersect(b, d)
e = Ray(C, D)
E = Intersect(c, e)
f = CircumcircleArc(A, E, B)

Tool: Half Plane Distance (command HalfPlaneDistance)
Input: A, B
Output: text1

b = LineBisector(A, B)
C = Intersect(b, Line[(0, 0), (1, 0)])
c = Circle(C, A)
d = Segment(A, B)
D = Intersect(b, d)
e = Ray(C, D)
E = Intersect(c, e)
g, F, G = HalfPlaneLine(A, B)
h: abs(log(Distance[A, F] / Distance[A, G] / (Distance[B, F] / Distance[B, G])))
text1: Name[A] + (Name[B]) + "=" + h

Tool: Half Plane Angle Measure (command HalfPlaneAngleMeasure)
Input: B, C, A
Output: text2

c, D = HalfPlaneRay(C, A)
d, E = HalfPlaneRay(C, B)
F = Center(d)
G = Center(c)
b = Segment(F, C)
e = Segment(G, C)
f = OrthogonalLine(C, b)
g = OrthogonalLine(C, e)
h = OrthogonalLine(B, f)
i = OrthogonalLine(A, g)
H = Intersect(f, h)
I = Intersect(g, i)
α = Angle(H, C, I)
β = Angle(Min[α, 360° - α])
j = Segment(H, I)
J = Point(j)
k = Ray(C, J)
p = Circle(C, 1)
K = Intersect(p, k, 1)
text2: "∡" + (Name[B]) + "" + (Name[C]) + "" + (Name[A]) + "=" + β + ""

Tool: Half Plane Raise Perpendicular (command HalfPlaneRaisePerpendicular)
Input: A, B
Output: k

c, C, D = HalfPlaneLine(A, B)
E = Midpoint(C, D)
b = Segment(E, B)
d = OrthogonalLine(B, b)
F = Intersect(d, Line[(0, 0), (1, 0)])
e = Circle(F, B)
H, I = Intersect(e, Line[(0, 0), (1, 0)])
k = CircumcircleArc(H, B, I)

Tool: Half Plane Drop Perpendicular (command HalfPlaneDropPerpendicular)
Input: A, B, C
Output: k, M

b = LineBisector(A, B)
O = Intersect(b, Line[(0, 0), (1, 0)])
c_1 = Circle(O, A)
d = Ray(O, C)
D = Intersect(c_1, d, 1)
c_2 = Circle(O, C)
c = OrthogonalLine(O, d)
e = Line(B, Line[(0, 0), (1, 0)])
E_1 = Intersect(e, c)
f = Ray(O, E_1)
E = Intersect(c_1, f)
F = Intersect(c_2, f)
g = Line(D, F)
h = Line(E, g)
G = Intersect(h, d)
k, H, I = HalfPlaneLine(C, G)
J = Center(k)
p = Circle(J, C)
K, L = Intersect(p, c_1)
M = If(y(L) > 0, L, K)

Tool: Half Plane Angle Bisector (command HalfPlaneAngleBisector)
Input: A, C, B
Output: q

c, D = HalfPlaneRay(C, A)
d, E = HalfPlaneRay(C, B)
F = Center(c)
G = Center(d)
b = Segment(F, C)
e = Segment(G, C)
f = OrthogonalLine(C, b)
g = OrthogonalLine(C, e)
h = OrthogonalLine(A, f)
i = OrthogonalLine(B, g)
A' = Intersect(f, h)
B' = Intersect(g, i)
j = AngularBisector(A', C, B')
k = OrthogonalLine(C, j)
H = Intersect(k, Line[(0, 0), (1, 0)])
p = Circle(H, C)
I, J = Intersect(p, Line[(0, 0), (1, 0)])
q = CircumcircleArc(I, C, J)

Tool: Half Plane Midpoint (command HalfPlaneMidpoint)
Input: C, D
Output: J

b = LineBisector(C, D)
F = Intersect(b, Line[(0, 0), (1, 0)])
c_1 = Circle(F, C)
c = Line(C, D)
G = Intersect(c, Line[(0, 0), (1, 0)])
d = Segment(F, G)
H = Midpoint(d)
e = Circle(H, G)
A, B = Intersect(c_1, e)
f = Line(A, B)
g = OrthogonalLine(D, f)
E = Intersect(g, f)
I = Intersect(f, Line[(0, 0), (1, 0)])
h = Ray(I, E)
J = Intersect(c_1, h)

Tool: Half Plane Perpendicular Bisector (command HalfPlanePerpendicularBisector)
Input: C, D
Output: J, p

b = LineBisector(C, D)
F = Intersect(b, Line[(0, 0), (1, 0)])
c_1 = Circle(F, C)
c = Line(C, D)
G = Intersect(c, Line[(0, 0), (1, 0)])
d = Segment(F, G)
H = Midpoint(d)
e = Circle(H, G)
A, B = Intersect(c_1, e)
f = Line(A, B)
g = OrthogonalLine(D, f)
E = Intersect(g, f)
I = Intersect(f, Line[(0, 0), (1, 0)])
h = Ray(I, E)
J = Intersect(c_1, h)
i = Segment(F, J)
j = OrthogonalLine(J, i)
K = Intersect(j, Line[(0, 0), (1, 0)])
k = Circle(K, J)
L, M = Intersect(k, Line[(0, 0), (1, 0)])
p = CircumcircleArc(L, J, M)

Tool: Half Plane Point Reflection (command HalfPlanePointReflection)
Input: A, M
Output: A'

b = LineBisector(A, M)
B = Intersect(b, Line[(0, 0), (1, 0)])
c_1 = Circle(B, A)
m = HalfPlaneRaisePerpendicular(A, M)
O = Center(m)
c = Line(A, O)
C, D = Intersect(c_1, c)
A' = If(C ≟ A, D, C)

Tool: Half Plane Circle By Center And Point (command HalfPlaneCircleByCenterAndPoint)
Input: O, B
Output: d

A = HalfPlanePointReflection(B, O)
b = LineBisector(A, B)
c = OrthogonalLine(O, Line[(0, 0), (1, 0)])
C = Intersect(b, c)
d = Circle(C, B)

Tool: Half Plane Circle By Center and Radius (command HalfPlaneCircleByCenterandRadius)
Input: O, A, B
Output: c

C, l = HalfPlanePerpendicularBisector(O, A)
D = Center(l)
b = Ray(D, B)
E = Intersect(l, b, 1)
m, M = HalfPlaneDropPerpendicular(C, E, B)
P = HalfPlanePointReflection(B, M)
c = HalfPlaneCircleByCenterAndPoint(O, P)