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

Remainder families

1

The question

Sort every integer — positive, negative and zero — into families by its remainder after dividing by 3. If you add a member of one family to a member of another, does the family of the answer depend on which members you chose?

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

2

Experiment

Remainder families

Colour each integer by its remainder after dividing by k. Every integer lands in exactly one family.

  • [0]{ …, −15, −12, −9, −6, −3, 0, … }
  • [1]{ …, −14, −11, −8, −5, −2, 1, … }
  • [2]{ …, −13, −10, −7, −4, −1, 2, … }

Add a member of one family to a member of another…

+
    3

    Hints, if you want them

      4

      What’s going on

      What’s going on

      Dividing by kk splits the integers into exactly kk families — the integers with remainder 00, with remainder 11, …, with remainder k−1k - 1. Every integer belongs to exactly one family. A splitting like this, into non-overlapping pieces that together cover everything, is called a partition.

      The rule "same remainder" has three properties:

      • every integer is related to itself (reflexive);
      • if aa is related to bb, then bb is related to aa (symmetric);
      • if aa is related to bb and bb to cc, then aa is related to cc (transitive).

      A relation with these properties is an equivalence relation, and its families are called equivalence classes. Every equivalence relation gives a partition, and every partition comes from one.

      modEq_equivalenceLean 4Proved here from basic factsFormally verified
      /-- Congruence modulo `k` is an **equivalence relation** (reflexive, symmetric, transitive).
      Its equivalence classes are the "hours" on a `k`-hour clock. -/
      theorem modEq_equivalence (k : Int) : Equivalence (ModEq k) :=
        ⟨modEq_refl k, modEq_symm, modEq_trans⟩
      Axioms used: No axiomsformal/Lumenary/Modular.leanTry it in the Lean web editor

      Now the surprise from the experiment. If a≡a′a \equiv a' and b≡b′(modk)b \equiv b' \pmod{k}, then a+b≡a′+b′a + b \equiv a' + b'. Why? Because a−a′a - a' and b−b′b - b' are multiples of kk, so their sum (a+b)−(a′+b′)(a + b) - (a' + b') is too. The family of a sum depends only on the families. The same is true for products.

      That means we can add and multiply the families themselves. The families become the elements of a new number system, written Z/kZ\Z/k\Z — a quotient of Z\Z. Building new structures by "gluing together" equivalent elements, and checking that the operations are well defined, is one of the most-used constructions in all of algebra.

      mod_add_modLean 4Applies a library theoremFormally verified
      /-- You may reduce before or after adding: `(a mod k + b mod k) mod k = (a + b) mod k`.
      This applies core Lean's `Nat.add_mod`. -/
      theorem mod_add_mod (a b k : Nat) : (a % k + b % k) % k = (a + b) % k :=
        (Nat.add_mod a b k).symm
      Axioms used: propextformal/Lumenary/Modular.leanTry it in the Lean web editor

      Analogy, not a formal construction: Colouring is a picture of the partition; the mathematical object is the set of residue classes itself.

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

      Where this leads