Skip to content
The Lumenary
K–2Ages 5–8 35 min

Addition, subtraction and place value to 100

Putting together, taking away, what the equals sign really means — and why 52 is five tens and two ones.

Formally verified · 13 LeanComputationally tested · 1 PythonAI-drafted · awaiting human reviewMathematically reviewed: Awaiting human review

Your guides: Chloe, Margaret, Gideon

MotivationH

Mangoes at the market

Priya helps her uncle at his fruit stall in a busy market in Chennai, India. The mangoes arrive in crates. Each crate holds ten mangoes.

In the morning, one customer buys 8 mangoes and another buys 5. How many mangoes did they buy altogether? Later, Priya counts 52 mangoes on the stall and sells 27 of them. How many are left?

Priya could count every mango one by one. But there are faster ways — and they all come from a few big ideas about putting together, taking away, and tens and ones.

IntuitionH

Putting together and taking away

Adding means putting two groups together and finding how many there are altogether. If you have 3 red beads and 4 blue beads, put them together: there are 7 beads. We write 3+4=73 + 4 = 7.

You don't have to count everything again. Start at the bigger number and count on: for 8+38 + 3, say eight and count on three more: nine, ten, eleven.

05810111520+1+1+1
Counting on from 8: three hops land on 11, so 8 + 3 = 11.

Subtracting has two meanings.

  • Taking away: you have 7 beads and give away 3. How many are left? 7−3=47 - 3 = 4.
  • Comparing: Amina has 12 shells and Lucas has 7. How many more does Amina have? Pair them up: 7 of Amina's shells have partners, and 5 do not. So Amina has 5 more: 12−7=512 - 7 = 5.

Adding and taking away are like doing and undoing. If you put 3 beads in a bag and then take 3 beads out, you are back where you started.

Explore

Make ten

Ten is a very friendly number. To add 8+58 + 5, move 2 of the 5 dots up to fill the first ten-frame. Now there is a full ten and 3 more:

8+5=8+2+3=10+3=13.8 + 5 = 8 + 2 + 3 = 10 + 3 = 13.

Press Make ten to watch it happen. Then change the numbers and try 9+49 + 4 and 7+67 + 6.

Make ten to add

Fill up the first ten-frame, then see what is left over.

  • first number (8), solid dots
  • second number (5), dots with a hole

First number

8

Second number

5

8 + 5 = ?

8 dots in the top frame and 5 dots in the bottom frame. How many altogether?

DefinitionsH

Big ideas

Definition— addition

If one collection has aa members and another, with no members in common, has bb members, then a+ba + b is the number of members when we put them together.

Definition— subtraction

When bb is not bigger than aa, a−ba - b is the number left when we take bb members away from a collection of aa members. It is also the difference between two amounts: how many more one has than the other.

Definition— the equals sign

The equals sign == means has the same value as. A number sentence with == is true when both sides are worth the same.

Definition— tens and ones

In a two-digit number, the left digit counts tens and the right digit counts ones. So 52 means 5 tens and 2 ones: 52=50+252 = 50 + 2.

Worked examplesH

Let's work it out

Example— The equals sign is a balance

Think of == as a balance that is level. These are all true:

7=3+43+4=4+310=106+6=10+27 = 3 + 4 \qquad 3 + 4 = 4 + 3 \qquad 10 = 10 \qquad 6 + 6 = 10 + 2

This one is false: 3+4=83 + 4 = 8, because the two sides are worth 7 and 8.

7=3 + 4
The equals sign works like a level balance: 7 blocks on one side, 3 blocks and 4 blocks on the other. Both sides have the same value, so 7 = 3 + 4 is true — and so is 3 + 4 = 7.

A missing number puzzle uses the same idea: 9+□=149 + \square = 14. Which number makes both sides worth 14? Count on from 9 to 14: ten, eleven, twelve, thirteen, fourteen — five steps. So □=5\square = 5.

Example— Turn-around facts and doubles

2+92 + 9 is the same as 9+29 + 2, and counting on 2 from 9 is quicker than counting on 9 from 2. So start with the bigger number: 9+2=119 + 2 = 11.

Doubles are easy to remember: 6+6=126 + 6 = 12. Then a near double is one more: 6+7=136 + 7 = 13.

Example— A fact family

The numbers 3, 4 and 7 belong together:

3+4=74+3=77−4=37−3=4.3 + 4 = 7 \qquad 4 + 3 = 7 \qquad 7 - 4 = 3 \qquad 7 - 3 = 4.

Use a fact family to subtract. For 15−715 - 7, ask: "7 and what make 15?" Since 7+8=157 + 8 = 15, we know 15−7=815 - 7 = 8.

Example— Tens and ones

In Priya's stall, 52 mangoes are 5 full crates of ten and 2 loose mangoes. So 52 means 5 tens and 2 ones — not "five and two". And 25 is a different number: 2 tens and 5 ones.

Build 52 below: put in 5 rods (tens) and 2 cubes (ones). Then try 25, and 70, and 7.

Tens and ones

Build a number with blocks. Ten small blocks can be traded for one bigger block, and back again.

Tens

5

Ones

2

52= 50 + 2

Each digit tells how many blocks are in its column: this is the expanded form of the number.

To compare, look at the tens first. Is 47 or 52 bigger? 47 has 4 tens and 52 has 5 tens, so 52 is bigger — even though 7 is bigger than 2. If the tens are the same, compare the ones: 68 is bigger than 63.

Example— Adding with tens and ones

32+4532 + 45: add the tens, 3+4=73 + 4 = 7 tens, and the ones, 2+5=72 + 5 = 7 ones. So 32+45=7732 + 45 = 77.

38+2538 + 25: the ones make 8+5=138 + 5 = 13 — that is 1 ten and 3 ones. Trade 10 ones for 1 ten. Now there are 3+2+1=63 + 2 + 1 = 6 tens and 3 ones: 38+25=6338 + 25 = 63. Step through it here:

Adding with base-ten blocks

Add column by column and see why carrying works: ten blocks of one kind make one block of the next kind.

  • from 38
  • from 25
  • regrouped

Tens

5

Ones

13

+
Written method
38
+25

Step 1 of 5

38 + 25

Show 38 and 25 with blocks. We add one column at a time, starting with the ones on the right.

Example— Taking away with tens and ones

58−2358 - 23: take away 2 tens from 5 tens and 3 ones from 8 ones. That leaves 3 tens and 5 ones: 58−23=3558 - 23 = 35.

52−2752 - 27: there are only 2 ones, and we cannot take 7 ones away from 2. So break a ten into 10 ones: now there are 4 tens and 12 ones. Take away 7 ones: 5 ones are left. Take away 2 tens: 2 tens are left. So 52−27=2552 - 27 = 25, and Priya has 25 mangoes left.

Subtracting with base-ten blocks

Subtract column by column and see why borrowing works: break one block into ten smaller ones.

  • blocks
  • from a broken block
  • taken away

Tens

5

Ones

2

Written method
52
−27

Step 1 of 5

52 − 27

Show 52 with blocks. We take away 27 one column at a time, starting with the ones on the right.

Check by adding: 25+27=5225 + 27 = 52. Taking away and adding undo each other.

ProofH

Why the rules work

The turn-around rule. Put 3 red beads and 4 blue beads in a row. Read the row from the left and you say 3+43 + 4. Walk round to the other side and read it from the left again: now you say 4+34 + 3. It is the same row of beads, so it has the same number of beads. That is why 3+4=4+33 + 4 = 4 + 3 — and the same is true for any two numbers.

Making ten. When adding three numbers, it doesn't matter which two we add first: (8+2)+3=8+(2+3)(8 + 2) + 3 = 8 + (2 + 3). Both mean "all the beads in three little piles". Making ten uses this to swap a hard sum, 8+58 + 5, for an easy one, 10+310 + 3.

Adding zero. Putting together a group with an empty group changes nothing: a+0=aa + 0 = a.

Taking away undoes adding. A bag has 9 beads in it. Put in 4 more, then take 4 beads out. You have taken away exactly as many as you put in, so 9 are left: (9+4)−4=9(9 + 4) - 4 = 9.

Subtraction does not turn around. 5−3=25 - 3 = 2: take 3 beads from 5 and 2 are left. But 3−53 - 5? You cannot take 5 beads from a bag with only 3. So 5−35 - 3 and 3−53 - 5 are not the same.

Why the tens decide. The biggest number with 4 tens is 49. The smallest number with 5 tens is 50. So every number with 4 tens is smaller than every number with 5 tens. That is why we compare the tens first.

For grown-ups · proofs for grown-ups

Following Wu (2011), define a+ba + b as the number of members of A∪BA \cup B, where AA and BB are collections with aa and bb members and no member in common. (This is well defined because counting does not depend on the order or on which collections we pick — see the counting lesson.)

Theorem— Commutativity and associativity

For all whole numbers a,b,ca, b, c:   a+b=b+a\;a + b = b + a and (a+b)+c=a+(b+c)(a + b) + c = a + (b + c).

Proof

Choose pairwise disjoint collections A,B,CA, B, C with a,b,ca, b, c members. Then a+ba + b counts A∪BA \cup B and b+ab + a counts B∪AB \cup A. These are the same collection (a thing is in one exactly when it is in the other), so they have the same number of members. Similarly (a+b)+c(a + b) + c counts (A∪B)∪C(A \cup B) \cup C and a+(b+c)a + (b + c) counts A∪(B∪C)A \cup (B \cup C), and both are the collection of things in at least one of AA, BB, CC.

∎

Theorem— Taking away undoes adding

For all whole numbers a,ba, b:   (a+b)−b=a\;(a + b) - b = a.

Proof

Start with A∪BA \cup B, which has a+ba + b members, and take away the bb members of BB. Since AA and BB have no member in common, exactly the members of AA remain, and there are aa of them.

∎

For b≤ab \le a, a−ba - b is the unique whole number cc with b+c=ab + c = a; for b>ab > a no such whole number exists, which is precisely why the integers are invented. The Lean section below proves the same laws a second way, from the definition of addition by counting on, a+(b+1)=(a+b)+1a + (b + 1) = (a + b) + 1, using induction (Dedekind 1888, Peano 1889). For place value, every whole number nn is 10q+r10q + r for exactly one pair q,rq, r with 0≤r≤90 \le r \le 9 (division with remainder); a two-digit numeral "qrqr" names 10q+r10q + r.

Formal mathematicsF

Gideon's true-or-false game

Gideon reads every number sentence as a statement that is either true or false. What do you think?

  1. "7=3+47 = 3 + 4" — True. The answer does not have to come after the equals sign.
  2. "3+4=4+33 + 4 = 4 + 3" — True. Both sides are worth 7.
  3. "5−3=3−55 - 3 = 3 - 5" — False! 5−3=25 - 3 = 2, but we cannot take 5 away from 3.
  4. "52 has 5 tens." — True. 52 is 5 tens and 2 ones.
For grown-ups · the rules of arithmetic, checked by Lean

In Lean, the natural numbers are built from 0 by taking "the next number" again and again, and addition is defined by counting on: adding b+1b + 1 means adding bb and then one more.

count_onLean 4Proved here from basic factsFormally verified
/-- Counting on one more: adding `b + 1` is adding `b` and then one more. In Lean this is how
addition is *defined*, so `rfl` proves it. Everything below is built on this rule. -/
theorem count_on (a b : Nat) : a + (b + 1) = (a + b) + 1 := rfl
Axioms used: No axiomsformal/Lumenary/AdditionSubtraction.leanTry it in the Lean web editor

Number sentences with the answer on the left, or with no "answer" at all, are perfectly good statements, and Lean checks them by calculating both sides:

seven_eq_three_add_fourLean 4Proved here from basic factsFormally verified
/-- `7 = 3 + 4` is a true statement: the two sides have the same value. The answer does not
have to come after the equals sign. -/
theorem seven_eq_three_add_four : 7 = 3 + 4 := rfl
Axioms used: No axiomsformal/Lumenary/AdditionSubtraction.leanTry it in the Lean web editor
three_add_four_eq_four_add_threeLean 4Proved here from basic factsFormally verified
/-- `3 + 4 = 4 + 3` is also true, although neither side is "the answer": both sides are 7. -/
theorem three_add_four_eq_four_add_three : 3 + 4 = 4 + 3 := rfl
Axioms used: No axiomsformal/Lumenary/AdditionSubtraction.leanTry it in the Lean web editor

The turn-around rule for every pair of numbers is proved by induction: it is true when b=0b = 0, and if it is true for bb, counting on one more shows it is true for b+1b + 1. (Two small helper facts, 0+a=a0 + a = a and (a+1)+b=(a+b)+1(a + 1) + b = (a + b) + 1, are proved the same way in the source file.) Core Lean also has the theorem ready-made; the second version simply applies it.

add_comm_from_countingLean 4Proved here from basic factsFormally verified
/-- **The turn-around rule** `a + b = b + a`, proved by induction on `b` from counting on.
Compare `add_comm_library`, which applies the theorem already in core Lean. -/
theorem add_comm_from_counting (a b : Nat) : a + b = b + a := by
  induction b with
  | zero => exact (zero_add_eq a).symm
  | succ k ih =>
    calc a + (k + 1) = (a + k) + 1 := count_on a k
      _ = (k + a) + 1 := by rw [ih]
      _ = (k + 1) + a := (succ_add_eq k a).symm
Axioms used: No axiomsformal/Lumenary/AdditionSubtraction.leanTry it in the Lean web editor
add_comm_libraryLean 4Applies a library theoremFormally verified
/-- The turn-around rule again, this time by applying core Lean's `Nat.add_comm`. -/
theorem add_comm_library (a b : Nat) : a + b = b + a := Nat.add_comm a b
Axioms used: No axiomsformal/Lumenary/AdditionSubtraction.leanTry it in the Lean web editor

Making ten is regrouping, and each step of this calc block is a line of the children's method:

make_tenLean 4Proved here from basic factsFormally verified
/-- **Making ten**: `8 + 5 = 10 + 3`. Split 5 into 2 and 3, give the 2 to the 8 to make ten,
and 3 is left. The middle step is regrouping (`add_assoc_from_counting`). -/
theorem make_ten : 8 + 5 = 10 + 3 :=
  calc 8 + 5 = 8 + (2 + 3) := rfl
    _ = (8 + 2) + 3 := (add_assoc_from_counting 8 2 3).symm
    _ = 10 + 3 := rfl
Axioms used: No axiomsformal/Lumenary/AdditionSubtraction.leanTry it in the Lean web editor

Taking away undoes adding, for all numbers; fact families are checked by calculation; and there is no counting number nn with n+5=3n + 5 = 3. (Lean's built-in 3 - 5 gives 0 by convention — "take away as many as you can" — which is why the last fact is stated as an equation to solve.)

sub_undoes_addLean 4Proved here from basic factsFormally verified
/-- **Taking away undoes adding**: `(a + b) − b = a`. Proved by induction on `b`: taking away
one more from one more leaves the same as before (core Lean's `Nat.add_sub_add_right`). -/
theorem sub_undoes_add (a b : Nat) : (a + b) - b = a := by
  induction b with
  | zero => rfl
  | succ k ih =>
    calc (a + (k + 1)) - (k + 1) = ((a + k) + 1) - (k + 1) := rfl
      _ = (a + k) - k := Nat.add_sub_add_right (a + k) 1 k
      _ = a := ih
Axioms used: propextformal/Lumenary/AdditionSubtraction.leanTry it in the Lean web editor
fact_familyLean 4Proved here from basic factsFormally verified
/-- A fact family: the numbers 3, 4 and 7 give two addition facts and two subtraction facts.
`decide` asks Lean to check all four. -/
theorem fact_family : 3 + 4 = 7 ∧ 4 + 3 = 7 ∧ 7 - 4 = 3 ∧ 7 - 3 = 4 := by decide
Axioms used: No axiomsformal/Lumenary/AdditionSubtraction.leanTry it in the Lean web editor
cannot_take_five_from_threeLean 4Proved here from basic factsFormally verified
/-- We cannot take 5 away from 3 and land on a counting number: no `n` satisfies `n + 5 = 3`.
So `5 − 3 = 2`, but `3 − 5` has no answer among the counting numbers — subtraction does not
turn around. (Lean's built-in `3 - 5` returns `0` by convention, "take away as many as you
can"; that is why we state the fact this way.) -/
theorem cannot_take_five_from_three : ¬ ∃ n : Nat, n + 5 = 3 := by
  intro ⟨n, h⟩
  -- `n + 5 = 3` would need `n + 5` to be at most 3, but it is at least 5.
  omega
Axioms used: propext, Quot.soundformal/Lumenary/AdditionSubtraction.leanTry it in the Lean web editor

Place value: tens n is n / 10 (whole tens) and ones n is n % 10 (the remainder). Every number is 10×10 \times tens ++ ones, and comparing tens first, then ones, compares the numbers — for all whole numbers, not only those below 100:

fifty_twoLean 4Proved here from basic factsFormally verified
/-- 52 is five tens and two ones — not "five and two". -/
theorem fifty_two : tens 52 = 5 ∧ ones 52 = 2 := ⟨rfl, rfl⟩
Axioms used: No axiomsformal/Lumenary/AdditionSubtraction.leanTry it in the Lean web editor
tens_and_onesLean 4Applies a library theoremFormally verified
/-- Every number is made of its tens and ones: `10 × tens + ones = n`.
This applies core Lean's `Nat.div_add_mod`. -/
theorem tens_and_ones (n : Nat) : 10 * tens n + ones n = n := Nat.div_add_mod n 10
Axioms used: propextformal/Lumenary/AdditionSubtraction.leanTry it in the Lean web editor
more_tens_biggerLean 4Proved here from basic factsFormally verified
/-- **More tens means bigger**, whatever the ones are: if `a` has fewer tens than `b`, then
`a < b`. Even with 9 ones, `a` stays below the next ten, and that ten is at most `b`
(e.g. `47 < 50 ≤ 52`). -/
theorem more_tens_bigger (a b : Nat) (h : tens a < tens b) : a < b :=
  calc a = 10 * tens a + ones a := (tens_and_ones a).symm
    _ < 10 * tens a + 10 := Nat.add_lt_add_left (Nat.mod_lt a (by decide)) _
    _ = 10 * (tens a + 1) := (Nat.mul_succ 10 (tens a)).symm
    _ ≤ 10 * tens b := Nat.mul_le_mul_left 10 h
    _ ≤ 10 * tens b + ones b := Nat.le_add_right _ _
    _ = b := tens_and_ones b
Axioms used: propextformal/Lumenary/AdditionSubtraction.leanTry it in the Lean web editor
same_tens_more_onesLean 4Proved here from basic factsFormally verified
/-- **Same tens, then compare the ones**: if `a` and `b` have the same tens and `a` has fewer
ones, then `a < b` (e.g. `63 < 68`). -/
theorem same_tens_more_ones (a b : Nat) (ht : tens a = tens b) (ho : ones a < ones b) :
    a < b :=
  calc a = 10 * tens a + ones a := (tens_and_ones a).symm
    _ = 10 * tens b + ones a := by rw [ht]
    _ < 10 * tens b + ones b := Nat.add_lt_add_left ho _
    _ = b := tens_and_ones b
Axioms used: propextformal/Lumenary/AdditionSubtraction.leanTry it in the Lean web editor
ComputationC

Margaret checks every fact

The computer also checked that "tens first, then ones" picks the bigger number for all 10,000 pairs of numbers from 0 to 99, and it did every two-digit addition and subtraction with answers up to 99 using tens and ones. It found something neat: exactly as many take-aways need a ten broken as additions need ten ones traded — because each take-away undoes an addition.

For grown-ups · Margaret's program

Press Run to try it in your browser. Every check covers finitely many cases, so it is evidence for those cases only. The reasons in "Why the rules work" are what make the rules true for all numbers.

Addition facts, take-away and place value, case by casePythonExact computationExhaustive finite checkComputationally tested
"""Addition facts, take-away, and tens-and-ones, checked case by case.

Children learn the addition facts up to 10 + 10, the turn-around rule
a + b = b + a, that taking away undoes adding, and the written methods for
adding and subtracting two-digit numbers with tens and ones. A computer can
check all of these for every case in a finite range: all 121 facts
a + b with a, b from 0 to 10, every number from 0 to 99, all 10,000 pairs
of such numbers, and every two-digit addition and subtraction whose answer
stays between 0 and 99.

These are exhaustive checks of finitely many cases. They show the rules hold
in this range; why they hold for all numbers is a proof (see the lesson).

Runs unchanged in the browser (Pyodide) using only the standard library.
"""

import textwrap

def facts(limit=10):
    """All addition facts (a, b, a + b) with 0 <= a, b <= limit."""
    return [(a, b, a + b) for a in range(limit + 1) for b in range(limit + 1)]

def facts_to_learn(limit=10):
    """Facts left to learn when a + b and b + a count as one fact."""
    return sorted({(min(a, b), max(a, b)) for a, b, _ in facts(limit)})

def take_away(a, b):
    """a - b as a counting number, or None when b > a (no answer)."""
    return a - b if b <= a else None

def tens_ones(n):
    """Split 0 <= n <= 99 into (tens, ones)."""
    if not 0 <= n <= 99:
        raise ValueError("expected a number from 0 to 99")
    return divmod(n, 10)

def less_by_place_value(a, b):
    """Decide a < b by comparing tens first, then ones."""
    (ta, oa), (tb, ob) = tens_ones(a), tens_ones(b)
    return ta < tb or (ta == tb and oa < ob)

def column_add(a, b):
    """Add two numbers up to 99 by columns; return (sum, regrouped?)."""
    (ta, oa), (tb, ob) = tens_ones(a), tens_ones(b)
    ones = oa + ob
    carry = 1 if ones >= 10 else 0
    tens = ta + tb + carry
    if tens > 9:
        raise ValueError("the sum is 100 or more")
    return 10 * tens + (ones - 10 * carry), bool(carry)

def column_subtract(a, b):
    """Subtract b <= a <= 99 by columns; return (difference, regrouped?)."""
    if b > a:
        raise ValueError("cannot take a bigger number from a smaller one")
    (ta, oa), (tb, ob) = tens_ones(a), tens_ones(b)
    borrow = 1 if oa < ob else 0
    ones = oa + 10 * borrow - ob
    tens = ta - borrow - tb
    return 10 * tens + ones, bool(borrow)

def main():
    table = facts()
    learn = facts_to_learn()
    turn = sum(a + b == b + a for a, b, _ in table)
    undo = sum(take_away(s, b) == a for a, b, s in table)
    print(f"1. Addition facts from 0 + 0 to 10 + 10: {len(table)} facts")
    print(f"   a + b = b + a holds in {turn} of {len(table)}")
    print(f"   using the turn-around rule, only {len(learn)} facts to learn")
    print(f"   (a + b) - b = a holds in {undo} of {len(table)}")
    pairs = [(a, b) for a in range(11) for b in range(11)]
    both = [(a, b) for a, b in pairs
            if take_away(a, b) is not None and take_away(b, a) is not None]
    print(f"2. Does subtraction turn around? 5 - 3 = {take_away(5, 3)},")
    print("   but 3 - 5 has no answer among the counting numbers")
    print(f"   pairs from 0..10 where a - b and b - a both exist: {len(both)}")
    print("   (only a = b, and then both are 0)")
    forms = sorted(10 * t + o for t in range(10) for o in range(10))
    print("3. Tens and ones: 52 =", tens_ones(52)[0], "tens and",
          tens_ones(52)[1], "ones")
    print(f"   every number 0-99 has exactly one form: {forms == list(range(100))}")
    agree = sum(less_by_place_value(a, b) == (a < b)
                for a in range(100) for b in range(100))
    print(f"   'tens first, then ones' agrees with a < b in {agree:,} of 10,000")
    sums = [(a, b) for a in range(100) for b in range(100 - a)]
    add_ok = sum(column_add(a, b)[0] == a + b for a, b in sums)
    add_re = sum(column_add(a, b)[1] for a, b in sums)
    diffs = [(a, b) for a in range(100) for b in range(a + 1)]
    sub_ok = sum(column_subtract(a, b)[0] == a - b for a, b in diffs)
    sub_re = sum(column_subtract(a, b)[1] for a, b in diffs)
    print("4. Column methods (answers from 0 to 99):")
    print(f"   38 + 25 -> {column_add(38, 25)}   52 - 27 -> "
          f"{column_subtract(52, 27)}   (answer, regrouped?)")
    print(f"   addition: {add_ok:,} of {len(sums):,} correct, "
          f"{add_re:,} needed a regroup")
    print(f"   subtraction: {sub_ok:,} of {len(diffs):,} correct, "
          f"{sub_re:,} needed a regroup")
    print("   (the same count: each take-away undoes one of the additions)")
    print()
    print(textwrap.fill(
        "Epistemic status: exact, exhaustive checks of finitely many cases "
        "(121 facts, 100 numbers, 10,000 comparisons, 5,050 sums and 5,050 "
        "differences). They show the rules work in this range and nothing "
        "beyond it; the proofs in the lesson explain why they hold for all "
        "whole numbers.",
        width=78,
    ))

if __name__ == "__main__":
    main()
Runs entirely in your browser, in an isolated worker. Nothing is sent to a server.
Exercises

Your turn

Use whatever helps: your fingers, counting on, making ten, or tens and ones. Hints are there whenever you want them.

1. Addition, subtraction and place value to 100

Warm-upHuman

Priya sells 8 mangoes to one customer and 5 mangoes to another. How many mangoes did she sell altogether? (8+58 + 5)

2. Addition, subtraction and place value to 100

CoreHuman

Which of these number sentences are true? Choose all that are true.

Choose all that apply

3. Addition, subtraction and place value to 100

CoreHuman

What number goes in the box? 9+□=149 + \square = 14

4. Addition, subtraction and place value to 100

Warm-upHuman

Amina has 12 shells and Lucas has 7 shells. How many more shells does Amina have than Lucas?

5. Addition, subtraction and place value to 100

Warm-upHuman

Priya has 52 mangoes. What does the 5 in 52 mean?

Choose one

6. Addition, subtraction and place value to 100

CoreHuman

Which number is bigger, 47 or 52?

Choose one

7. Addition, subtraction and place value to 100

StretchHuman

Work out 38+2538 + 25.

8. Addition, subtraction and place value to 100

StretchHuman

Priya has 52 mangoes and sells 27. How many are left? (52−2752 - 27)

9. Addition, subtraction and place value to 100

StretchFormal

Gideon's game: true or false? "For any two counting numbers, a−ba - b is the same as b−ab - a."

Choose one

10. Addition, subtraction and place value to 100

StretchComputational

Margaret's computer checked a+b=b+aa + b = b + a for every aa and bb from 0 to 10 — all 121 facts — and found no mistakes. Does that prove the turn-around rule for every pair of numbers, even huge ones?

Choose one
Common misconceptionsH

Things that trip people up

Misconception

"The answer always comes after the equals sign." The equals sign means has the same value as, not here comes the answer. So 7=3+47 = 3 + 4 is true, and so is 3+4=4+33 + 4 = 4 + 3. In a puzzle like 9+□=149 + \square = 14, the box is not 23!

Misconception

"Subtraction turns around, like addition." 3+5=5+33 + 5 = 5 + 3, but 5−35 - 3 is not the same as 3−53 - 5. Taking 3 away from 5 leaves 2; taking 5 away from 3 cannot be done with counting numbers.

Misconception

"52 means five and two." The 5 is in the tens place, so it means 5 tens, which is 50. Fifty-two is 50+250 + 2, and it is much bigger than 25.

Misconception

"Always take the smaller digit from the bigger one." For 52−2752 - 27, it is tempting to do 7−2=57 - 2 = 5 in the ones and get 35. But we must take 7 ones from 2 ones, which needs a ten to be broken first. The answer is 25. Checking by adding catches the mistake: 35+27=6235 + 27 = 62, not 52.

ViewpointsH

For grown-ups: other ways of seeing

Algebra— A commutative monoid, waiting to become a group

The whole numbers with ++ and 00 satisfy a+b=b+aa + b = b + a, (a+b)+c=a+(b+c)(a + b) + c = a + (b + c) and a+0=aa + 0 = a: they form a commutative monoid. Subtraction is only partly defined, because most elements have no additive inverse among the whole numbers. Adjoining inverses gives the integers, a group — the smallest one containing the whole numbers. "Add 3" and "take away 3" are the first example children meet of an action and its inverse. See doing and undoing, integers and monoids, groups and rings.

Number theory— Ten is a choice

Place value works in any base b≥2b \ge 2: every whole number can be written in exactly one way as a sum of powers of bb with digits from 00 to b−1b - 1 (repeated division with remainder). Base ten probably comes from our fingers. The Maya counted in twenties, Babylonian astronomers in sixties — a choice that survives in our 60 minutes to the hour — and computers work in base two. The comparison rule "most significant digit first" and the carrying rule work in every base for the same reason they work in base ten.

History & global context

Numbers with places, around the world

  • In Mesopotamia, about 4,000 years ago, Babylonian scribes wrote numbers with place value in base sixty.
  • In China, counting rods were laid out in columns for ones, tens, hundreds, …, with an empty space for zero. Rod arithmetic is described in old texts such as the Sunzi Suanjing, written roughly 1,600 years ago.
  • The Maya of Central America wrote numbers with place value, counting mostly in twenties, and used a sign for zero.
  • In ancient Egypt, hieroglyphic numerals were not place value: one symbol for one, another for ten, another for a hundred, repeated as often as needed.
  • The base-ten digits used across much of the world today, with place value and zero, were developed in India. They became known in the Islamic world through writers such as al-Khwārizmī in Baghdad (9th century), and in Europe partly through Fibonacci's Liber Abaci (1202).
  • The signs ++ and −- appeared in print in a German arithmetic book by Johannes Widmann in 1489. The equals sign was invented by the Welsh mathematician Robert Recorde in The Whetstone of Witte (1557), who chose two parallel lines "bicause noe .2. thynges, can be moare equalle".
Further reading

For grown-ups: further reading

  • Hung-Hsi Wu, Understanding Numbers in Elementary School Mathematics (2011) — addition, subtraction and place value developed carefully for teachers.
  • Liping Ma, Knowing and Teaching Elementary Mathematics (1999) — includes a famous chapter on teaching subtraction with regrouping.
  • Thomas P. Carpenter, Megan Loef Franke and Linda Levi, Thinking Mathematically: Integrating Arithmetic and Algebra in Elementary School (2003) — on children's ideas about the equals sign and true/false number sentences.
  • Karl Menninger, Number Words and Number Symbols: A Cultural History of Numbers (1958; English translation 1969).