Skip to content

Worked examples

Four complete recipes, each stated as a goal in plain language, then the full configuration, then what the generated output looks like. Rule slugs and names refer to the canonical seeded catalog — see Canonical rules.

1. A single-technique recipe

Goal. Train the "no rule 9" Plain family in the ones: 9 is the technique being learned, 7 and 8 are recent enough to be worth reviewing, and everything smaller is fair padding.

Recipe settings

FieldValue
sumMax9
minStepsCount2

sumMax: 9 does the place restriction on its own here: the operand alphabet derived from a ceiling of 9 contains only the ones place, so no place constraint is needed.

Rule attachments

RuleNameUsagePlace
RULE-43Plain (9) - Additiontarget0
RULE-52Plain (9) - Subtractiontarget0
RULE-41Plain (7) - Additionreview0
RULE-42Plain (8) - Additionreview0
RULE-50Plain (7) - Subtractionreview0
RULE-51Plain (8) - Subtractionreview0
RULE-35RULE-40Plain (1)…(6) - Additionfiller0
RULE-44RULE-49Plain (1)…(6) - Subtractionfiller0
RULE-53No negative sumconstraint0

Count fields are left null throughout. The recipe leans on the whitelist rather than quotas: because a step must match some target, review, or filler rule to be admitted, the 18 Plain rules already define exactly the space the student is allowed to work in.

What it generates. Single-digit steps only, running sums walking around 0..9, mixing the target ±9 moves with smaller Plain padding. A typical trace: 0 → +3 → +5 → -1 → +2 → -9.

Add a quota when the target must actually appear

With no minCount on the target rules, nothing forces a ±9 step into any given exercise — the search is free to produce an all-filler sequence. Adding minCount: 1 to one or both target attachments makes the technique mandatory, at the cost of a slightly harder search.

2. A bounded-sum recipe (0..19)

Goal. Train carrying into the tens, with every running sum confined to 0..19.

Recipe settings

FieldValue
sumMax19
minStepsCount6

Rule attachments

RuleNameUsagePlace
RULE-43Plain (9) - Additiontarget0
RULE-52Plain (9) - Subtractiontarget0
RULE-35RULE-40Plain (1)…(6) - Additionfiller0
RULE-44RULE-49Plain (1)…(6) - Subtractionfiller0
RULE-53No negative sumconstraint0

Setting sumMax: 19 is the whole story when the window starts at 0. The ceiling is enforced structurally, and it also caps the operand alphabet at the tens.

If the window does not start at 0 — or if you want a 0..19 window on a recipe whose sumMax is deliberately looser — add one more constraint attachment:

current_sum >= 0 AND current_sum <= 19 AND prev_sum <= 19
RuleNameUsagePlace
(new constraint rule)Sums within 0..19constraint0

The prev_sum <= 19 clause is not redundant. current_sum only describes the state after a step, so bounding it alone leaves the opening value free to sit outside the window — Sum range has the measured demonstration and the reasoning.

What it generates. Sequences whose running total crosses 10 and comes back, never exceeding 19 and never going negative.

3. Multi-place: "10-19, tens fixed at 1 bead"

Goal. Children learn the numbers 10-19. The tens digit only ever moves by exactly one bead, while the ones digit follows the full "no rule 9" Plain family.

This is the first recipe on this page that produces composite steps — single steps touching two decimal places at once, such as +11 or -11. That works by attaching rules to a place-channel rather than globally. Multi-place combo steps explains the mechanism; here is the configuration.

Recipe settings

FieldValue
sumMax19
minStepsCount7

Tens channel — one bead, no variety

RuleNameUsagePlace
RULE-35Plain (1) - Additionfiller10
RULE-44Plain (1) - Subtractionfiller10

Ones channel — the full 18-rule Plain family

RuleNameUsagePlace
RULE-43Plain (9) - Additiontarget1
RULE-52Plain (9) - Subtractiontarget1
RULE-41Plain (7) - Additionreview1
RULE-42Plain (8) - Additionreview1
RULE-50Plain (7) - Subtractionreview1
RULE-51Plain (8) - Subtractionreview1
RULE-35RULE-40Plain (1)…(6) - Additionfiller1
RULE-44RULE-49Plain (1)…(6) - Subtractionfiller1

Global attachment

RuleNameUsagePlace
RULE-53No negative sumconstraint0

RULE-35 and RULE-44 are attached twice each — once at place: 10 as the fixed-bead tens channel, once again at place: 1 inside the ones channel's family. That is not a mistake: the same rule legitimately plays two different roles in two different channels of the same recipe, and uniqueness is on (recipe, rule, place). Drop the place: 1 copies and the ones channel loses its digit 1, which makes +11 and -11 unreachable.

Cost. 20 pattern-role attachments. The ceiling is 31, and channels multiply against it — see the note below.

What it generates. A mix of composite steps such as +11, +19, -13 and ordinary atomic steps. A -10 in the output is not a bug: it is an atomic step where the ones channel simply contributed nothing that particular step. Atomic and composite steps coexist naturally, because a channel-tagged rule also admits a standalone atomic step at that same place.

Do not add a place constraint to a channel recipe

Attaching a place = 1-style constraint rule here would reject every composite step silently — place is null on composite steps. See Restricting places and Multi-place combo steps.

Similarly, a last-step constraint written for single-digit work (e.g. one requiring current_value > -6 AND current_value < 6) is incompatible with a tens-channel step and will make this recipe infeasible.

4. Multi-place: "10-99, both digits follow no rule 9"

Goal. Children learn the numbers 10-99, where the tens digit and the ones digit each independently avoid Rule 9 — that is, 9 is the target digit at both places, not merely permitted there.

Recipe settings

FieldValue
sumMax99
minStepsCount6

Rule attachments

RuleNameUsagePlace
RULE-62Plain (any)target1
RULE-62Plain (any)target10
RULE-53No negative sumconstraint0

Three attachments; two of them pattern-role. RULE-62 is a consolidated rule — one expression covering the whole Plain family, both signs, every digit — attached once per channel.

Why consolidate. The alternative is the 18-rule family duplicated across two channels: 18 × 2 = 36 pattern-role attachments, over the ceiling of 31, which simply will not compile. Consolidating sidesteps the multiplication entirely.

What you give up. A consolidated rule cannot carry a per-digit target/review/filler split. This configuration says "any Plain digit at either place", not "Plain(9) is specifically the target and Plain(7)/(8) are specifically review". For this recipe's stated intent that is the correct reading anyway — but if you need per-digit quotas on one channel, attach the full family to that channel and the consolidated rule to the other (18 + 1 = 19, comfortably under the ceiling).

The other consolidated rules follow the same pattern: RULE-59 (Rule 5 (any)), RULE-60 (Rule 10 (any)), RULE-61 (Combo (any)), RULE-62 (Plain (any)).

What it generates. Two-digit composite steps such as +47 or -83, alongside atomic steps at either place, with running sums inside 0..99.

Choosing between examples 3 and 4

The two multi-place recipes sit at opposite ends of the same tradeoff:

Example 3Example 4
Pattern-role attachments202
Per-digit target/review/filler splitYes, on the ones channelNo
Channels2 (tens fixed, ones full family)2 (both consolidated)
Headroom under the 31-attachment ceiling1129

Reach for consolidated "(any)" rules whenever a per-digit quota split is not actually needed for a given channel. Reach for the full family when the pedagogy depends on naming which digit is the target.

See also

Reference and cookbook for mental-math rule and recipe authoring.