$\textsf{\LARGE O}$

$\textsf{\LARGE I}$

$\textsf{\LARGE r}$

$\textsf{\LARGE A}$

$\textsf{\LARGE I'}$

Addition

To get A + B, we reflect O in M_{AB}
getting a new point of r.
By construction, addition is  commutative 
and satisfies the associative property.

Multiplication

We create the product 
by constructing similar triangles, 
obtaining a new point of r.
This product verifies the associative 
and distributive property.

Division

$\textsf{\LARGE B}$

$\textsf{\LARGE M_{AB}}$

Substraction

To get A − B 
we add A + B'.

$\textsf{\LARGE A+B}$

O is the neutral element: A+O=A

A' is opposite element of A: A+A'=O

Subtraction is not commutative

$\textsf{\LARGE B'}$

$\textsf{\LARGE A−B}$

$\textsf{\LARGE A'}$

B−A

$\textsf{\LARGE A×B}$

The product is commutative

I is the neutral element:  A x I = A

A⁻¹ is the inverse element of A:  A x A⁻¹ = I

A⁻¹

To get A/B 
we multiply A x B⁻¹.

$\textsf{\LARGE B⁻¹}$

$\textsf{\LARGE (B⁻¹)'}$

$\textsf{\LARGE A/B}$

B/A

Division is not commutative

A⁻¹

(A⁻¹)'

Order

The I' O I symmetry allows us to define a TOTAL ORDER:
A ≤ O :⇔ AI' ≤ AI              A ≤ B :⇔ A − B ≤ O

(Note that A² ≥ O always.)

$\textsf{\LARGE M_{AB'}}$

Structure

Due to all of the above, the set of points on the line r, 
endowed with the sum and product operations thus defined, 
constitutes a similar structure (“ordered field”) to that of ℝ.

In fact, we can establish a bijection (“isomorphism”) 
between both structures:
                               (r, O, +, ×) → (ℝ, +, ×)
making correspond to each point P of r the real number 
–OP if P<O and the real number OP if P≥O.

$\textsf{\LARGE P}$

$\textsf{\LARGE A²}$

O = (-1.57, 1.72)
I = (1.0348055445956892, 1.3127272727272667)
r = Line(O, I)
A = Point(r)
I' = Mirror(I, O)
op1 = true
op3 = false
op4 = false
B = Point(r)
M = Midpoint(A, B)
op2 = false
AmásB = Mirror(O, M)
B' = Mirror(B, O)
AmenosB = OpSuma(O, A, B')
A' = Mirror(A, O)
verBmenosA = false
BmenosA = OpSuma(O, B, A')
f = OrthogonalLine(O, r)
c = Semicircle(I', I)
C = Intersect(c, f, 1)
verBporA = false
d = Semicircle(B', B)
D = Intersect(d, f, 1)
g = Line(A, C)
h = Line(D, g)
AporB = Intersect(h, r)
i = Line(C, B)
e = Semicircle(A', A)
F = Intersect(e, f, 1)
j = Line(F, i)
k = Circle(O, I)
Ainv = Mirror(A, k)
p = Circle(M, O)
verAinv = false
B'_1 = Mirror(B, c)
G = Mirror(B'_1, O)
q = Semicircle(G, B'_1)
H = Intersect(q, f)
l = Line(H, g)
AentreB = Intersect(l, r)
BentreA = OpDivisión(O, I, B, A)
verBentreA = false
A'_1 = Mirror(A, c)
J = Mirror(A'_1, O)
s = Semicircle(J, A'_1)
K = Intersect(s, f)
n = Line(C, B)
m = Line(K, n)
op5 = false
texto51a = If(abs(A - I') ≤ abs(A - I), "A ≤ O", "A > O")
texto51b = If(abs(B - I') ≤ abs(B - I), "B ≤ O", "B > O")
texto51c = If(abs(OpResta[O, A, B] - I') ≤ abs(OpResta[O, A, B] - I), "A ≤ B", "A > B")
L = Point(p)
t = Segment(M, L)
M' = Midpoint(A, B')
p' = Circle(M', O)
L' = Point(p')
t' = Segment(M', L')
N = Point(Segment[A, AporB])
a = Line(N, g)
Q = Intersect(a, f)
l1: {Polygon[O, N, Q]}
anima5 = 0.826 (slider from 0 to 1)
op6 = false
P = Point(r)
PP = If(abs(P - I') < abs(P - I), ((-abs(P - O)), 0), (abs(P - O), 0))
b = Segment(O, P)
u = Vector(P, PP)
anima6 = 0.84 (slider from 0 to 1)
o = PathParameter(A)
f_1 = Segment((0, 0), PP)
AA = OpProducto(O, I, A, A)
texto6: "Actual \; state:
\\\\   \;    \;    \;   \;  " + (LaTeX[texto51a]) + "
\\\\   \;    \;    \;   \; " + (LaTeX[texto51b]) + "
\\\\   \;    \;    \;   \; " + (LaTeX[texto51c]) + ""

Tool: OpSuma
Elige O y luego dos puntos
Input: O, A, B
Output: O'

C = Midpoint(A, B)
O' = Mirror(O, C)

Tool: OpResta
Elige O, el primer punto y el segundo punto
Input: O, A, B
Output: O'

B' = Mirror(B, O)
C = Midpoint(A, B')
O' = Mirror(O, C)

Tool: OpProducto
Elige O e I, y luego dos puntos
Input: O, I, A, B
Output: E

I' = Mirror(I, O)
B' = Mirror(B, O)
c = Semicircle(I', I)
d = Semicircle(B', B)
f = Line(O, I)
g = OrthogonalLine(O, f)
C = Intersect(c, g, 1)
h = Line(C, A)
D = Intersect(d, g, 1)
i = Line(D, h)
E = Intersect(f, i)

Tool: OpDivisión
Elige O e I, y luego el primer punto y el segundo punto
Input: O, I, A, B
Output: E

f = Line(O, I)
g = OrthogonalLine(O, f)
I' = Mirror(I, O)
c = Semicircle(I', I)
Binv = Mirror(B, c)
Binv' = Mirror(Binv, O)
e = Semicircle(Binv', Binv)
F = Intersect(e, g, 1)
C = Intersect(c, g, 1)
h = Line(C, A)
i = Line(F, h)
E = Intersect(f, i)