Skip to content
The Lumenary
Wonder TrailOptional · never gradedStarts from Integers

Clock arithmetic

1

The question

It's 9 o'clock. What time will it be in 5 hours — and in 29 hours? Can a clock teach us a whole new kind of arithmetic?

Try the experiment before reading on. There’s no wrong way to explore.

2

Experiment

The clock laboratory

On a clock with k hours, counting wraps around. Explore adding and multiplying.

01234567891011

9 + 5 = 14 ≡ 2 (mod 12)

14 hours forward on a 12-hour clock lands on 2: the remainder when 14 is divided by 12.

3

Hints, if you want them

    4

    What’s going on

    What’s going on

    On a clock with kk hours, counting wraps around: after k−1k - 1 comes 00 again. Two numbers land on the same position exactly when they have the same remainder after division by kk. Mathematicians write

    a≡b(modk)a \equiv b \pmod{k}

    ("aa is congruent to bb modulo kk") when aa and bb leave the same remainder. So 9+5=14≡2(mod12)9 + 5 = 14 \equiv 2 \pmod{12}, and 9+29=38≡2(mod12)9 + 29 = 38 \equiv 2 \pmod{12} as well.

    clock_wrapsLean 4Proved here from basic factsFormally verified
    /-- On a 12-hour clock, 5 hours after 9 o'clock is 2 o'clock: `(9 + 5) mod 12 = 2`. -/
    theorem clock_wraps : (9 + 5) % 12 = 2 := by decide
    Axioms used: No axiomsformal/Lumenary/Modular.leanTry it in the Lean web editor

    Clock arithmetic has its own multiplication too, and something remarkable happens. On a 7-hour clock, 3⋅5=15≡13 \cdot 5 = 15 \equiv 1, so 55 acts like "one third"! On a 4-hour clock, though, 22 has no partner at all: 2⋅x2 \cdot x is always 00 or 22.

    three_inv_mod_sevenLean 4Proved here from basic factsFormally verified
    /-- Modulo 7, the number 3 has an inverse, namely 5: `3 · 5 = 15 = 2 · 7 + 1`. -/
    theorem three_inv_mod_seven : (3 * 5) % 7 = 1 := by decide
    Axioms used: No axiomsformal/Lumenary/Modular.leanTry it in the Lean web editor
    two_no_inv_mod_fourLean 4Proved here from basic factsFormally verified
    /-- Modulo 4, the number 2 has **no** inverse: `2 · x` is always even, so it is never `1`
    more than a multiple of 4. `decide` checks all four possibilities `x = 0, 1, 2, 3`. -/
    theorem two_no_inv_mod_four : ∀ x : Fin 4, (2 * x.val) % 4 ≠ 1 := by decide
    Axioms used: No axiomsformal/Lumenary/Modular.leanTry it in the Lean web editor

    The pattern you can see in the experiment is a theorem: aa has a multiplicative partner modulo kk exactly when aa and kk have no common factor except 11. The table is evidence for small kk; the proof, which uses Bézout's identity, comes in number theory. When kk is prime, every non-zero number has a partner — so arithmetic on a prime clock behaves like arithmetic with fractions. These number systems are called Z/kZ\Z/k\Z, and for prime kk they are examples of finite fields.

    inverses_mod_fiveLean 4Proved here from basic factsFormally verified
    /-- Modulo 5 (a prime), every non-zero number has an inverse:
    `1·1 = 1`, `2·3 = 6`, `3·2 = 6`, `4·4 = 16`, and each of these leaves remainder 1.
    `decide` checks every `a` and searches for each `b`. -/
    theorem inverses_mod_five : ∀ a : Fin 5, a.val ≠ 0 → ∃ b : Fin 5, (a.val * b.val) % 5 = 1 := by
      decide
    Axioms used: propext, Quot.soundformal/Lumenary/Modular.leanTry it in the Lean web editor

    Modular arithmetic is not only a curiosity. It underlies calendars and check digits on identity numbers, and it is the foundation of much of modern cryptography.

    Formally verified · 4 LeanComputationally testedAI-drafted · awaiting human review
    5

    Where this leads