Lesson 2: Rotation As Addition
A rotation rot(n,k) moves a node by adding a stride k and reducing back into C_n.
Lesson Goal
Learn why motion on a finite circle is modular addition. After this lesson, you should be able to combine two rotations into one rotation by adding their strides.
The Idea
Lesson 1 gave us a finite address space. Now we let a node move. Starting from node x, a stride k sends the node to x + k, then the result is reduced modulo n.
Definition In Words
rot(n,k)(x) means “start at x, add k, and reduce the result in C_n.”
rot(n,k)(x) = (x + k) mod n
Two rotations in a row do not create a new kind of motion. If the first stride is b and the second stride is a, the combined motion lands where a single stride a + b lands.
What This Relearns From Ordinary Math
This lesson is the beginning of algebraic structure. A rotation is a function, and composing rotations is a function-composition law. Later chapters reuse the same habit for quaternions, phase actions, bundles, schedules, and proof-carrying diagrams.
Diagram
The widget compares a two-step route with the one-step route that uses the summed stride.
The widget demonstrates the composition law as an executable reference. It is not a formal proof.
Worked Example
In C_12, start at 8. Move by 5, then by 7.
8 + 5 = 13 -> 1 in C_12
1 + 7 = 8 in C_12
The combined stride is 5 + 7 = 12, and a stride of 12 returns to the same node in C_12.
Common Mistake
Do not treat the drawn path length as the theorem. The law is about address arithmetic modulo n; the picture only helps you see it.
Try It
Use n = 12, start x = 8, stride b = 5, and stride a = 7. Predict the final node before reading the widget output. Then change a and b while keeping a + b fixed; the final node should stay fixed.
Checkpoint
Why should rot(n,a)(rot(n,b)(x)) and rot(n,a+b)(x) land on the same node?
Source Trail
The theorem cards give the exact proof-status trail for identity, composition, and inverse rotation.
Python reference model:
from circle_math.finite import Circle
C = Circle(12)
C.rot(C.rot(8, 5), 7) == C.rot(8, 12)Paper source: Circle Calculus I